Im trying to create recyclerview that displays the results of two different arrays from one single object (ObjectMaster). I dont care the order so much, just as long as both arrays are displayed in the list. Any ideas or suggestions would be extremely appreciated.
Model
public ObjectMaster { List<Object1> first_objects; List<Object2> second_objects; } Adapter
public class ObjectMasterAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private ObjectMaster object; private static final int TYPE_OBJECT1 = 0; private static final int TYPE_OBJECT2 = 1; public ObjectMasterAdapter(ObjectMaster object) { this.object = object; } public class Object1Holder extends RecyclerView.ViewHolder { private TextView title; private TextView subtitle; public Object1Holder(View itemView) { super(itemView); title = (TextView) itemView.findViewById(R.id.title); subtitle = (TextView) itemView.findViewById(R.id.subtitle); } public void bindObj(Object1 object) { title.setText(object.getTitle()); subtitle.setText(object.getSubtitle()); } } public class Object2Holder extends RecyclerView.ViewHolder { private TextView title; public Object2Holder(View itemView) { super(itemView); title = (TextView) itemView.findViewById(R.id.title); } public void bindObj(Object2 object) { title.setText(object.getTitle()); } } @Override public int getItemViewType(int position) { // I need to figure out the best way to determine if its already listed objects from the first object array (Object1) } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.object_item, viewGroup, false); switch(i) { case TYPE_OBJECT1: return new Object1Holder(view); case TYPE_OBJECT2: return new Object2Holder(view); } return null; } public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) { switch (viewHolder.getItemViewType()) { case TYPE_OBJECT1: Object1Holder object1 = (Object1Holder) viewHolder; object1.bindObj(object.first_objects.get(i)); break; case TYPE_OBJECT2: Object2Holder object2 = (Object2Holder) viewHolder; object2.bindObj(object.second_objects.get(i)); break; } } @Override public int getItemCount() { return object.first_objects.size() + object.second_objects.size(); }