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
...,状态将显示检查而不是检查,我在适配器中添加了复选框以设置复选框检查是否检查了textview
状态,但字符串状态将其与XML中的textview
值android:text
进行比较而不是数据库中的值,它只能检测数据库中的值我添加了监听器......如果没有onClick
监听器,我该怎么办呢?
答案 0 :(得分:0)
为什么不将这段代码放在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);
}
}
答案 1 :(得分:0)
因为您在Viewholder的构造函数中从TextView获取Text,该构造函数在您在onBindViewHolder()之前调用,其中您在TextView中设置Text,并且在创建RecyclerView之后仅调用一次构造函数。 所以,请在onBindViewHolder()方法中添加此代码以获得正确的响应。
String status = textViewStatus.getText().toString();
if(status.equals("Check")){
checkBox.setChecked(true);
}else{
checkBox.setChecked(false);
}