onItemClick上的android getItemViewType

时间:2011-11-08 22:07:01

标签: android

我想在onItemClick事件中使用getItemViewType来确定当前项目类型(在我的情况下为1或2)。我重写了getItemViewTypegetViewTypeCount

  @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)

由于

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课程应包含getItemViewTypegetViewTypeCount方法