Android中ListView Item布局優(yōu)化技巧
本文實(shí)例講述了Android中ListView Item布局優(yōu)化技巧。分享給大家供大家參考,具體如下:
之前一直都不知道ListView有多種布局的優(yōu)化方法,只能通過隱藏來實(shí)現(xiàn),自己也知道效率肯定是很低的,但是也不知道有什么方法,這些天又查了一些資料,然后知道 其實(shí)google早就幫我們想好了優(yōu)化方案了。
假設(shè)你的ListView Item有三種布局樣式的可能:就比如很簡單的顯示一行字,要靠左,居中,靠右。
這時(shí)我們就可以在BaseAdapter里面重寫兩個(gè)方法:
private static final int TYPE_LEFT = 0; private static final int TYPE_CENTER = 1; private static final int TYPE_RIGHT = 2; @Override public int getViewTypeCount() { return 3; } //假如我們的數(shù)據(jù)列表是list,里面的Bean有一個(gè)屬性(type)是表明這個(gè)item應(yīng)該使用哪種布局的。 @Override public int getItemViewType(int position) { return list.get(position).type; } //然后在我們的getView方法就可以這樣了 @Override public View getView(int position, View convertView, ViewGroup parent) { int type = getItemViewType(position); ViewHoldLeft holdLeft; ViewHoldCenter holdCenter; ViewHoldRight holdRight; if (convertView == null) { switch(type) { case TYPE_LEFT: holdLeft = new ViewHoldLeft(); convertView = xxxxxx//像普通的一樣 holdLeft.textView = xxxxxx//像普通的一樣 holdLeft.textView.setText("holdLeft"); convertView.setTag(holdLeft); break; case TYPE_CENTER: holdCenter = new ViewHoldCenter(); convertView = xxxxxx//像普通的一樣 holdCenter.textView = xxxxxx//像普通的一樣 holdCenter.textView.setText("holdCenter"); convertView.setTag(holdCenter); break; case TYPE_RIGHT: holdRight = new ViewHoldRight(); convertView = xxxxxx//像普通的一樣 holdRight.textView = xxxxxx//像普通的一樣 holdRight.textView.setText("holdRight"); convertView.setTag(holdRight); break; default: break; } } else { switch(type) { case TYPE_LEFT: holdLeft = (ViewHoldLeft)convertView.getTag(); holdLeft.textView.setText("holdLeft"); break; case TYPE_CENTER: holdCenter = (ViewHoldCenter)convertView.getTag(); holdCenter.textView.setText("holdCenter"); break; case TYPE_RIGHT: holdRight = (ViewHoldRight)convertView.getTag(); holdRight.textView.setText("holdRight"); break; default: break; } } return convertView; } private static class ViewHoldLeft { private TextView textView; } private static class ViewHoldCenter { private TextView textView; } private static class ViewHoldRight { private TextView textView; }
gogle還是很人性的。
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
相關(guān)文章
Android 獲取服務(wù)器與客戶端時(shí)差的實(shí)例代碼
下面小編就為大家分享一篇Android 獲取服務(wù)器與客戶端時(shí)差的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01Android?自定義view中根據(jù)狀態(tài)修改drawable圖片
這篇文章主要介紹了Android?自定義view中根據(jù)狀態(tài)修改drawable圖片的相關(guān)資料,需要的朋友可以參考下2023-07-07Android 滑動(dòng)監(jiān)聽RecyclerView線性流+左右劃刪除+上下移動(dòng)
這篇文章主要介紹了Android 滑動(dòng)監(jiān)聽RecyclerView線性流+左右劃刪除+上下移動(dòng)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09Android自定義控件之開關(guān)按鈕學(xué)習(xí)筆記分享
這篇文章主要為大家分享了Android自定義開關(guān)按鈕的學(xué)習(xí)筆記,內(nèi)容豐富,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05Android 自定義View的構(gòu)造函數(shù)詳細(xì)介紹
這篇文章主要介紹了Android 自定義View的構(gòu)造函數(shù)詳細(xì)介紹的相關(guān)資料,這里對(duì)構(gòu)造函數(shù)進(jìn)行了對(duì)比按需使用,需要的朋友可以參考下2016-12-12詳解Android數(shù)據(jù)存儲(chǔ)之Android 6.0運(yùn)行時(shí)權(quán)限下文件存儲(chǔ)的思考
本篇文章主要介紹了Android數(shù)據(jù)存儲(chǔ)之Android 6.0運(yùn)行時(shí)權(quán)限下文件存儲(chǔ)的思考,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。2016-12-12android控件實(shí)現(xiàn)單擊拖動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了android控件實(shí)現(xiàn)單擊拖動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01深入理解Android中的Handler異步通信機(jī)制
這篇文章主要介紹了Android中的Handler異步通信機(jī)制,文中舉了兩個(gè)例子介紹了Handler里面實(shí)用的API中的方法,需要的朋友可以參考下2016-03-03Android天氣預(yù)報(bào)app改進(jìn)版
這篇文章主要為大家詳細(xì)介紹了改進(jìn)版的Android天氣預(yù)報(bào)app,內(nèi)容更加充實(shí),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07Android 判斷ip地址合法實(shí)現(xiàn)代碼
這篇文章主要介紹了Android 判斷ip地址合法實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-06-06