我想在onItemClick事件中使用getItemViewType来确定当前项目类型(在我的情况下为1或2)。我重写了getItemViewType
和getViewTypeCount
:
@Override
public int getItemViewType(int position) {
//not last item
if (position != getCount() - 1)
return 0;
else
return 1;
}
@Override
public int getViewTypeCount() {
return 2;
}
onItemClick
:
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
Integer curItemType = arg0.getAdapter().getItemViewType(arg2);
Log.i("curItemType",Integer.toString(curItemType));
}
对于onItemClick
中的curItemType,我得到值2和3(不是我的0或1)可以解释一下我的原因吗?
在getView
方法中curItemType
是正确的(0或1)
由于
答案 0 :(得分:1)
请检查您是否已将arg0适配器(父级)实际设置为您已创建的适配器(在这种情况下,请将其称为MyAdapter
)。
您应该实际投出getAdapter()
结果,以便在调用getItemViewType
时使用您编写为适配器的类,只是为了保持安全。
像这样:
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
MyAdapter adapter = (MyAdapter) arg0.getAdapter();
Integer curItemType = adapter.getItemViewType(arg2);
Log.i("curItemType",Integer.toString(curItemType));
您的MyAdapter
课程应包含getItemViewType
和getViewTypeCount
方法