我想实现一个具有多种 View 类型的 RecyclerView。因此,我在适配器类中使用了 getItemViewType()
方法:
@Override
public int getItemViewType(int position) {
return mItems.get(position).getType();
}
现在,我收到以下错误:
Incompatible types. Required int. Found String.
我知道:这是因为 getType()
方法返回的是 String 而不是 int。
问题:如何返回一个 int ?
最佳答案
您必须将该 String
“转换”为 Integer
值。
public class CustomAdapter {
private static final int VIEW_TYPE_DEFAULT = 0;
private static final int VIEW_TYPE_1 = 1;
private static final int VIEW_TYPE_2 = 2;
private static final int VIEW_TYPE_3 = 3;
private static final int VIEW_TYPE_4 = 4;
@Override
public int getItemViewType(int position) {
String typeString = mItems.get(position).getType();
switch (typeString) {
case "STRING1":
return VIEW_TYPE_1;
case "STRING2":
return VIEW_TYPE_2;
case "STRING3":
return VIEW_TYPE_3;
....
default:
return VIEW_TYPE_DEFAULT;
}
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
switch (getItemViewType(position)) {
case VIEW_TYPE_1;
//bind viewtype 1
break;
case VIEW_TYPE_2;
//bind viewtype 2
break;
case VIEW_TYPE_3;
//bind viewtype 3
break;
....
default:
// Bind default view
}
}
}
关于android - getItemViewType() - 如何返回一个 int 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56974518/