Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using multiple views and data sets in RecyclerView

I have the following adapter which populates a RecyclerView with CardView items containing one TextView. It fills these TextViews with data from a String array. However, now I want to add another TextView to my CardViews and populate it with a separate data array, and I was wondering how I can best achieve this:

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
private String[] mDataset;

public static class ViewHolder extends RecyclerView.ViewHolder {

    public TextView mTextView;
    public ViewHolder(View itemView) {
        super(itemView);
        mTextView = (TextView)itemView.findViewById(R.id.grade);
    }
}

public RecyclerAdapter(String[] myDataset) {
    mDataset = myDataset;
}

@Override
public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                               int viewType) {

    View v = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.card_item, parent, false);

    ViewHolder vh = new ViewHolder(v);

    return vh;
}

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

    holder.mTextView.setText(mDataset[position]);

}

@Override
public int getItemCount() {
    return mDataset.length;
    }
}

All help is appreciated as always!

like image 595
mlz7 Avatar asked Dec 13 '25 06:12

mlz7


1 Answers

Simply add another TextView or any other view in your CardLayout XML R.layout.card_item

Then

public TextView mTextView;
public TextView mTextView1;
public TextView mTextView2;
public TextView mTextView3;

 public ViewHolder(View itemView) {
    super(itemView);
    mTextView = (TextView)itemView.findViewById(R.id.grade);
    mTextView1 = (TextView)itemView.findViewById(R.id.grade1);
    mTextView2 = (TextView)itemView.findViewById(R.id.grade2);
    mTextView3 = (TextView)itemView.findViewById(R.id.grade3);
  }

and finally set data to all the desired textviews as

    @Override
 public void onBindViewHolder(ViewHolder holder, int position) {
     holder.mTextView.setText("String");
     holder.mTextView1.setText("String");
     holder.mTextView2.setText("String");
     holder.mTextView3.setText("String");
    }
like image 92
Nitesh Avatar answered Dec 15 '25 20:12

Nitesh



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!