tommyldo
tommyldo

Reputation: 13

How to implement CheckBox in my Recyclerview?

I created tab layout with recyclerview (with fragments). Now I am trying to implement checkboxes, but I stuck with. I tried some solution online, but without any result. I added checkbox part into xml. Can you help me ?

RecyclerViewAdapter.java

public class RecyclerViewAdapter extends RecyclerView.Adapter <RecyclerViewAdapter.MyViewHolder>{
    Context mContext;
    List<RecTab1> mData;
    public RecyclerViewAdapter(Context mContext, List<RecTab1> mData) {
        this.mContext = mContext;
        this.mData = mData;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v ;
        v = LayoutInflater.from(mContext).inflate(R.layout.item_tab1,parent,false);
        MyViewHolder vHolder = new MyViewHolder(v);
        return vHolder;
    }
    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {

        holder.tv_name.setText(mData.get(position).getName());
        holder.tv_subName.setText(mData.get(position).getSubName());

    }
    @Override
    public int getItemCount() {
        return mData.size();
    }
    public static class MyViewHolder extends RecyclerView.ViewHolder{

        private TextView tv_name;
        private TextView tv_subName;
        public MyViewHolder (View itemView){
            super (itemView);
            tv_name = (TextView) itemView.findViewById(R.id.Item1Name);
            tv_subName = (TextView) itemView.findViewById(R.id.Item1SubName);
        }
    }
}

item java file:

public class RecTab1 {
    private String Name;
    private String SubName;

    public RecTab1(){
    }
    public RecTab1 (String name, String subName){
        Name = name;
        SubName = subName;
    }
    public String getName() {
        return Name;
    }
    public String getSubName() {
        return SubName;
    }
    public void setName(String name) {
        Name = name;
    }
    public void setSubName(String subName) {
        SubName = subName;
    }
}

Upvotes: 1

Views: 45

Answers (1)

Priyank-py
Priyank-py

Reputation: 369

In your R.layout.item_tab1 add the checkbox:

<CheckBox android:id="@+id/cb_checkbox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Check box text" />

Then define it in you viewholder:

public static class MyViewHolder extends RecyclerView.ViewHolder {
    private TextView tv_name;
    private TextView tv_subName;
    private Checkbox cb_checkbox
    public MyViewHolder (View itemView){
        super (itemView);
        tv_name = (TextView) itemView.findViewById(R.id.Item1Name);
        tv_subName = (TextView) itemView.findViewById(R.id.Item1SubName);
        cb_checkbox = (CheckBox) itemView.findViewById(R.id.cb_checkbox)
    }
}

Then in you onBindViewHolder add the setOnClickListener to the checkbox:

@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {

    holder.tv_name.setText(mData.get(position).getName());
    holder.tv_subName.setText(mData.get(position).getSubName());
    holder.cb_checkbox.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View arg0) {
          //Your code goes here
          }

}

Hope it helps. Here a source for more info.

Upvotes: 1

Related Questions