数据库中的 TextView 未在适配器中检测到
TextView from database not detect in adapter
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
private Context context;
private List<Result> results;
public RecyclerViewAdapter(Context context, List<Result> results) {
this.context = context;
this.results = results;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_view, parent, false);
ViewHolder holder = new ViewHolder(v);
return holder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Result result = results.get(position);
holder.textViewId.setText(result.getId());
holder.textViewName.setText(result.getName());
holder.textViewPhone.setText(result.getPhone());
holder.textViewAddress.setText(result.getAddress());
holder.textViewStatus.setText(result.getStatus());
}
@Override
public int getItemCount() {
return results.size();
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
@BindView(R.id.textId) TextView textViewId;
@BindView(R.id.textName) TextView textViewName;
@BindView(R.id.textPhone) TextView textViewPhone;
@BindView(R.id.textAddress) TextView textViewAddress;
@BindView(R.id.textStatus) TextView textViewStatus;
@BindView(R.id.button) Button button;
@BindView(R.id.checkBox) CheckBox checkBox;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
itemView.setOnClickListener(this);
String status = textViewStatus.getText().toString();
if(status.equals("Check")){
checkBox.setChecked(true);
}else{
checkBox.setChecked(false);
}
}
我已经从 MySQL 数据库中检索到 text view
中的数据 recyclerview
show name status phone..., status 将显示 check 而不是检查,我在适配器中添加了复选框以设置复选框检查 textview
状态是否已检查,但字符串状态将其与 XML 中的 textview
值 android:text
进行比较来自数据库的值,如果我添加侦听器,它只能检测来自数据库的值...没有 onClick
侦听器我怎么能这样做?
为什么不将此代码块放在 onBindViewHolder
方法中:
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
...
String status = holder.textViewStatus.getText().toString();
if(status.equals("Check")){
holder.checkBox.setChecked(true);
}else{
holder.checkBox.setChecked(false);
}
}
因为您在 Viewholder 的构造函数中从 TextView 获取文本,该构造函数在您在 TextView 中设置文本的 onBindViewHolder() 之前调用,并且在创建 RecyclerView 后仅调用一次构造函数。
因此,请在 onBindViewHolder() 方法中添加此代码以获得正确的响应。
String status = textViewStatus.getText().toString();
if(status.equals("Check")){
checkBox.setChecked(true);
}else{
checkBox.setChecked(false);
}
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
private Context context;
private List<Result> results;
public RecyclerViewAdapter(Context context, List<Result> results) {
this.context = context;
this.results = results;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_view, parent, false);
ViewHolder holder = new ViewHolder(v);
return holder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Result result = results.get(position);
holder.textViewId.setText(result.getId());
holder.textViewName.setText(result.getName());
holder.textViewPhone.setText(result.getPhone());
holder.textViewAddress.setText(result.getAddress());
holder.textViewStatus.setText(result.getStatus());
}
@Override
public int getItemCount() {
return results.size();
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
@BindView(R.id.textId) TextView textViewId;
@BindView(R.id.textName) TextView textViewName;
@BindView(R.id.textPhone) TextView textViewPhone;
@BindView(R.id.textAddress) TextView textViewAddress;
@BindView(R.id.textStatus) TextView textViewStatus;
@BindView(R.id.button) Button button;
@BindView(R.id.checkBox) CheckBox checkBox;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
itemView.setOnClickListener(this);
String status = textViewStatus.getText().toString();
if(status.equals("Check")){
checkBox.setChecked(true);
}else{
checkBox.setChecked(false);
}
}
我已经从 MySQL 数据库中检索到 text view
中的数据 recyclerview
show name status phone..., status 将显示 check 而不是检查,我在适配器中添加了复选框以设置复选框检查 textview
状态是否已检查,但字符串状态将其与 XML 中的 textview
值 android:text
进行比较来自数据库的值,如果我添加侦听器,它只能检测来自数据库的值...没有 onClick
侦听器我怎么能这样做?
为什么不将此代码块放在 onBindViewHolder
方法中:
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
...
String status = holder.textViewStatus.getText().toString();
if(status.equals("Check")){
holder.checkBox.setChecked(true);
}else{
holder.checkBox.setChecked(false);
}
}
因为您在 Viewholder 的构造函数中从 TextView 获取文本,该构造函数在您在 TextView 中设置文本的 onBindViewHolder() 之前调用,并且在创建 RecyclerView 后仅调用一次构造函数。 因此,请在 onBindViewHolder() 方法中添加此代码以获得正确的响应。
String status = textViewStatus.getText().toString();
if(status.equals("Check")){
checkBox.setChecked(true);
}else{
checkBox.setChecked(false);
}