編輯:關於android開發
在平常使用ListView的時候,通常我們使用的item的layout都是同一個。當需要有多個不同的item的layout時,有兩中處理的辦法。
第一種方法: 重寫getView()
方法
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
int type=listDatas.get(position);
switch(type)
{
case 1:
convertView = inflater.inflate(R.layout.item1, null);
break;
case 2:
convertView = inflater.inflate(R.layout.item2, null);
break;
...
}
return convertView;
}
缺點:
無法重用convertView,每次都會重新創建新的view。在item數目非常多的時候,很容易會造成OOM和ListView滑動卡頓。
第二種方法: 其實Adapter和ListView早就為我們准備好處理這種情況的方法:getViewTypeCount()
,getItemViewType()
。getViewTypeCount()
:返回不同種item的數目,getItemViewType()
:返回的item類別的唯一標識,標識可以自己確定。
我們需要重寫getViewTypeCount()
,getItemViewType()
,getView()
方法。假設我們在偶數時顯示item1,奇數時顯示item2.
@Override
public int getViewTypeCount()
{
return 2;
}
@Override
public int getItemViewType(int position)
{
return position%2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
int type = getItemViewType(position);
if(convertView==null)
{
switch(type)
{
case 0:
convertView = inflater.inflate(R.layout.item1, null);
break;
case 1:
convertView = inflater.inflate(R.layout.item2, null);
break;
default:
convertView = inflater.inflate(R.layout.default_item, null);
break;
}
}
// 綁定數據
switch(type)
{
case 0:
...
break;
case 1:
...
break;
default:
...
break;
}
return convertView;
}
優點:
多個item的convertView會被重用。這種做法在其他地方也有很好的用處,比如,ListView的優化上,對於ListView的包含的item較大時,我們可以對item切片分塊來加載,這樣就需要顯示多種item,正好就可以使用這種做法。
Android實戰技巧之四十八:Android上的Java8和kotlin Java和Android這對搭檔目前也在風雨飄搖中。 技術圈子的事,往往被商業利益牽著鼻子
android:自定義HorizontalScrollView實現qq側滑菜單 今天看了鴻洋_大神在慕課網講的qq5.0側滑菜單。學了不少的知識,同時也佩服鴻洋_大神
Android中使用Notification實現進度通知欄(示例三),notification進度條我們在使用APP的過程中,軟件會偶爾提示我們進行版本更新,我們點擊確認
Android實用工具類-GrallyAndPhotoUtils圖片處理工具 目錄 目錄 概述 前言 拍照 創建存儲拍照圖片的文件 調用系統拍照程序 讀取相