【发布时间】:2017-11-22 13:30:15
【问题描述】:
我在recycylerView 中膨胀多个布局视图,并通过覆盖getItemViewType() 方法来获取viewType
@Override
public int getItemViewType(int position) {
Log.e("getItemViewType ", myAllItemsList.get(position).getClass()+"");
if (myAllItemsList.get(position) instanceof MyCategory) {
return CATEGORY_VIEW;
} else if (myAllItemsList.get(position) instanceof MyPromotion) {
return PROMOTION_VIEW;
} else {
return ITEM_VIEW;
}
}
因为myAllItemsList 是对象类型
private List<Object> myAllItemsList = new ArrayList<>();
我将三种类型的对象传递给它
List<MyCategory>MyPromotionList<MyItem>
在调用上述方法时,if condition 永远不会执行,因为在 myAllItemsList 中没有类似 MyCategory 的东西,而是包含 List<MyCategoty>。当我尝试
myAllItemsList.get(position) instanceof List<MyCategory>
Android Studio 说Illegal generic type for instenceof。
所以我的问题是我怎样才能知道myAllItemsList 包含List<MyCategory>,这样我才能知道return CATEGORY_VIEW。
任何帮助将不胜感激。
【问题讨论】:
-
看起来类似于this question
-
您可以将
List<MyCategory>包装在Categories类中(例如)。
标签: android list generics android-recyclerview adapter