来自数据库的TextView未在适配器中检测到

时间:2018-02-24 12:56:42

标签: android android-recyclerview textview event-listener

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中的textviewandroid:text进行比较而不是数据库中的值,它只能检测数据库中的值我添加了监听器......如果没有onClick监听器,我该怎么办呢?

2 个答案:

答案 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);
            }
相关问题