【发布时间】:2015-05-10 22:34:50
【问题描述】:
我正在尝试创建 recyclerview,它显示来自一个对象 (ObjectMaster) 的两个不同数组的结果。我不太关心顺序,只要两个数组都显示在列表中即可。任何想法或建议将不胜感激。
型号
public ObjectMaster {
List<Object1> first_objects;
List<Object2> second_objects;
}
适配器
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();
}
【问题讨论】:
标签: android android-recyclerview