I created a simple RecycleView with a single ViewHolder but then I wanted to add another one and display them in the same recyclerView and so I had to make another ViewHolder.
I tried to follow this advice: How to set two adapters to one RecyclerView?
He tried to make a simple bind method but that didn't work for me.
It says that I should display an object of the ViewHolder, but how do I do that?
Thanks for any in advice.
Code:
some package, imports; *
public class MultiAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public static class FirstViewHolder extends RecyclerView.ViewHolder{
TextView second_segment;
private FirstViewHolder( View itemView) {
super(itemView);
second_segment = itemView.findViewById(R.id.segment_tuesday);
}
**private void bind(MultiAdapter firstObj) {
Exercise exercise = new Exercise();
//firstObj = exercise;
}**
}
public static class SecondViewHolder extends RecyclerView.ViewHolder {
TextView first_segment;
private SecondViewHolder( View itemView) {
super(itemView);
first_segment = itemView.findViewById(R.id.segment_monday);
}
**private void bind(MultiAdapter secondObj) {
Exercise exercise = new Exercise();
//secondObj = exercise;
}**
}
private static int ITEM_TYPE_C_T;
private static int ITEM_TYPE_S_B;
private List<Object> items = new ArrayList<>();
public MultiAdapter(List<Object> items){
this.items.addAll(items);
}
@Override
public int getItemViewType(int position) {
if (items.get(position) instanceof MultiAdapter) {
return ITEM_TYPE_C_T;
}
else{
return ITEM_TYPE_S_B;
}
}
@Override
public int getItemCount() {
return items.size();
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
if (viewType == ITEM_TYPE_S_B){
View view = layoutInflater.inflate(R.layout.segment_exmpl1,parent,false);
return new SecondViewHolder(view);
} else {
View view = layoutInflater.inflate(R.layout.segment_exmpl2,parent,false);
return new FirstViewHolder(view);
}
}
@Override
**public void onBindViewHolder(@NonNull RecyclerView.ViewHolder Holder, int position) {
Object item = items.get(position);
if (Holder instanceof FirstViewHolder) {
FirstViewHolder viewHolder0 = (FirstViewHolder) Holder;
//((FirstViewHolder) Holder).bind((FirstObj) item);
} else {
SecondViewHolder viewHolder0 = (SecondViewHolder) Holder;
//((SecondViewHolder) Holder).bind((SecondObj) item);
}
}**
}