Android适配器getItemViewType无法正常工作

时间:2014-12-03 07:49:09

标签: android android-listview android-arrayadapter android-adapter

我希望列表的第一项是图片,后续的项目是对它的评论。显然,两种类型的项目都有不同的布局。我的getItemViewType如下:

@Override
public int getItemViewType(int position) {
    if (position == 0) {
        return 1;
    } else {
        return 2;
    }
}

我的getView

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (position == 0) {
        if (convertView == null) {
            ...
        }
    }
    else {
        if (convertView == null) {
            ....
            convertView.setTag(tag);
        }
        Holder holder = convertView.getTag();
        ...
    }
    return convertView;
}

问题在于,回收的视图仍然使用位置0充气的convertView作为评论中的那些!由于我没有为convertView设置标记,因此holder为空。有什么我做错了吗?注意如果重要的话,我会使用ArrayAdapter

3 个答案:

答案 0 :(得分:3)

您必须覆盖getViewTypeCount并返回您拥有的不同视图类型的数量:

@Override
public int getViewTypeCount() {
    return 2;
}

答案 1 :(得分:0)

你不应该检查位置。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (getItemViewType(position) == 0) {
        if (convertView == null) {
            ...
        }
    }
    else {
        if (convertView == null) {
            ....
            convertView.setTag(tag);
        }
        Holder holder = convertView.get(tag);
        ...
    }
    return convertView;
}

答案 2 :(得分:0)

尝试

else {
    if (convertView == null || getViewType(position) == 2)