我希望列表的第一项是图片,后续的项目是对它的评论。显然,两种类型的项目都有不同的布局。我的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
。
答案 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)