的布局,我试图设置不同的布局资源,使用此代码我的第一个列表项元素:设置第一ListView项
int type;
@Override
public int getItemViewType(int position) {
if(position==0) {
type = R.layout.queue_item_next;
} else {
type = R.layout.queue_item;
}
return type;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = (View) inflater.inflate(getItemViewType(position), parent, false);
}
此代码然而可与一些意外行为。出于某种原因,ListView的最后一个元素也被设置为具有此替代布局,我不知道为什么。
什么可能导致这种情况发生?
感谢。
也许是因为''convertView被重用。删除if条件并检查它是否有效? – Sanjeet
我并不百分百确定,但我认为这与查看回收有关。您目前检查convertView是否为空,但我认为您还必须检查convertView的当前类型。您可以将其存储在convertView的标记中以执行此检查 – 0xDEADC0DE
但未添加对convertView的检查将增加内存当数量要显示的项目很大时,违反回收视图的概念。 – Swapnil