編輯:關於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,正好就可以使用這種做法。
效果圖點擊標簽,指示線滑動到當前的標簽下。 用到的技術: activity中添加 fragement, ViewPager, 自定義繪制view-Activity中動態添
1. 前言bxCAN是STM32系列最穩定的IP核之一,無論有哪個新型號出來,這個IP核基本未變,可見這個IP核的設計是相當成熟的。本文所講述的內容屬於這個IP核的一部分
復習一下view滑動的幾種實現方式1.通過layout實現通過不斷重新layout view 達到滑動的效果。 @Override public boolea
本文實例為大家分享了打飛機游戲BOSS以及勝利失敗頁面設計的Android代碼,具體內容如下修改子彈類:public class Bullet { //子彈圖片資源 pu