多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > 綜合技術 > 通用Adapter與ListView滾動時不加載圖片的封裝

通用Adapter與ListView滾動時不加載圖片的封裝

來源:程序員人生   發(fā)布時間:2015-06-12 08:07:10 閱讀次數:2924次

本文原創(chuàng),轉載請注明鏈接:http://blog.kymjs.com/

在Android開發(fā)中寫Adapter是1件非常麻煩的事情,枯燥重復,卻又不能不去做。 對Adapter1般都繼承BaseAdapter復寫幾個方法,getView里面使用ViewHolder存儲,其實大部份的代碼都是類似的。那末本文就帶大家1起做1次將Adapter封裝成1個通用的Adapter。

關于本文的完全Demo,可以參考KJFrameForAndroid開發(fā)框架2.2版本中封裝的實例,KJAdapter和AdapterHolder這兩個類。
那末接下來我們進入正文,下面這個類似的代碼應當是我們看的最多的:

public class EmojiGridAdapter extends BaseAdapter { private List<Emojicon> datas; private final Context cxt; public EmojiGridAdapter(Context cxt, List<Emojicon> datas) { this.cxt = cxt; if (datas == null) { datas = new ArrayList<Emojicon>(0); } this.datas = datas; } public void refresh(List<Emojicon> datas) { if (datas == null) { datas = new ArrayList<Emojicon>(0); } this.datas = datas; notifyDataSetChanged(); } @Override public int getCount() { return datas.size(); } @Override public Object getItem(int position) { return datas.get(position); } @Override public long getItemId(int position) { return position; } private static class ViewHolder { ImageView image; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); ...... convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.image.setImageResource(datas.get(position).getResId()); return convertView; }}


初步抽取

其中BaseAdapter的4個方法必須寫,但是基本上前3個都是1模1樣的, 所以可使用泛型,寫1個基類出來,把數據封裝到基類里面,只需要構造方法傳入就好了

public class KJBaseAdapter<T> extends BaseAdapter { List<T> datas; KJBaseAdapter(Context cxt,List<T> datas){ ...... } @Override public int getCount() { return datas.size(); } @Override public Object getItem(int position) { return datas.get(position); } @Override public long getItemId(int position) { return position; }}

然后是我們唯1需要動腦的getView()方法,首先是判斷converView是不是空,然后載入item布局,然后ViewHolder挨個初始化控件,然后通過tag保存holder,最后設置View的顯示。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产亚洲精品线观看77 | 在线欧美日韩精品一区二区 | 欧美末成年videos在线 | 精品剧情v国产在免费线观看 | 久久93精品国产91久久综合 | 久久综合中文字幕一区二区三区 | 尤物视频在线观看免费视频 | 成人在线观看一区 | 18在线观看国内精品视频 | 视频在线国产 | 久久avav | 高清视频在线观看 | 在线视频免费观看 | 国产乱码一区二区三区四 | 精品国免费一区二区三区 | 国产福利资源 | 中文精品久久久久国产不卡 | 日本不卡在线观看免费v | 日本中文字幕永久在线 | 日本xxx护士与黑人 日本xxx网站 | 久久精品综合一区二区三区 | 亚洲国产欧美在线不卡中文 | 美女福利视频国产免费观看 | 国模一区二区三区视频一 | 国产黄色在线网站 | 国产精品二区页在线播放 | 国产欧美日韩亚洲 | 美女视频在线观看网站 | freexxxhd性欧美 | 国产综合精品久久亚洲 | 欧美xxxx性xxxxx高清视频 | 波多野结衣久久高清免费 | 亚洲欧美一区二区三区另类 | 中文字幕乱码人成乱码在线视频 | 国产精品亚洲片在线不卡 | 成人午夜大片免费视频77777 | 波多野结衣中文字幕视频 | 伊人tv| 欧美性性性性性色大片免费的 | 最新亚洲国产有精品 | a级片网|