的佈局,我試圖設置不同的佈局資源,使用此代碼我的第一個列表項元素:設置第一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