自訂配接器視圖getview實現方法比較

來源:互聯網
上載者:User

標籤:android   style   blog   color   使用   os   io   資料   

  Android開發之中,listview是一個非常重要的組件,它以列表的形式顯示使用者的資料,使用者可以自由的定義LsitView每一列的內容,樣式,很多時候使用ListView都需要使用自訂Adapter,自訂Adapter之中最重要的莫過於getView方法了。

  getView方法實現主要的三種方法:

  1、第一種就是每次都給adapter new一個View載入布局。

    例如:

public View getView(int position, View convertView, ViewGroup parent) { View item = mInflater.inflate(R.layout.list_item_icon_text, null); ((TextView) item.findViewById(R.id.text)).setText(DATA[position]); ((ImageView) item.findViewById(R.id.icon)).setImageBitmap( (position & 1) == 1 ? mIcon1 : mIcon2); return item;}

  使用這種方式會佔據大量記憶體,十分影響效能(不建議使用)

  2、當convertView不為空白的時候直接重新使用convertView從而減少了很多不必要的View的建立,然後載入資料。

public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = mInflater.inflate(R.layout.item, parent, false); } ((TextView) convertView.findViewById(R.id.text)).setText(DATA[position]); ((ImageView) convertView.findViewById(R.id.icon)).setImageBitmap( (position & 1) == 1 ? mIcon1 : mIcon2); return convertView; }

  這種方式每次都要判斷view回收池之中是否有可用的view,如果有則重用;如果沒有則,建立View。(可以使用)

  3、最快的一種方式:定義一個ViewHolder,將convetView的tag設定為ViewHolder,不為空白時重新使用即可

static class ViewHolder {TextView text;ImageView icon;} public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder;  if (convertView == null) { convertView = mInflater.inflate(R.layout.list_item_icon_text, parent, false); holder = new ViewHolder(); holder.text = (TextView) convertView.findViewById(R.id.text); holder.icon = (ImageView) convertView.findViewById(R.id.icon); convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.text.setText(DATA[position]);holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);return convertView;}

  (推薦使用)

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.