Android實現(xiàn)ListView異步加載的方法(改進(jìn)版)
本文實例講述了Android實現(xiàn)ListView異步加載的方法。分享給大家供大家參考,具體如下:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
…………
ViewHolder VH = null;
…………
VH.mImageView.setTag(position);
VH.mThumb.setImageDrawable(imageLoader.loadDrawable(position,
new ImageCallback() {
public void imageLoaded(Drawable imageDrawable, int position) {
ImageView imageViewByTag = (ImageView) mList.findViewWithTag(position);
if (imageViewByTag != null) {
imageViewByTag.setImageDrawable(imageDrawable);
}
}
}));
}
private static LruCache<Long, Drawable> mCache = new LruCache<Long, Drawable>(100);
public class AsyncImageLoader {
public Drawable loadDrawable(final int position, final ImageCallback callback){
Drawable d = null;
d = mCache.get(position);
if (d == null) {
final Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
callback.imageLoaded((Drawable) msg.obj, position);
}
};
Thread t = new Thread(){
public void run() {
Drawable drawable = Utils.getDrawable(mContext, position, 1, mMyDefaultIcon);
Drawable value = mCache.get(position);//cache有可能已經(jīng)被更改了,所以重新取一次
if (value == null) {
mCache.put(position, drawable);
} else {
drawable = value;
}
handler.sendMessage(handler.obtainMessage(0,drawable));
};
};
t.setPriority(Thread.MIN_PRIORITY);
t.start();
return mMyDefaultIcon;
} else {
return d;
}
}
}
public interface ImageCallback{
public void imageLoaded(Drawable imageDrawable, int position);
}
這個是在前面一篇http://m.fzitv.net/article/90408.htm基礎(chǔ)上修改的。主要為了加入LruCache
后來發(fā)現(xiàn),這種方法要不停的開辟新的線程,效率并不是很高。最后改為加入一后臺線程,不停從后進(jìn)先出隊列中取出任務(wù)進(jìn)行處理。
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android操作SQLite數(shù)據(jù)庫技巧總結(jié)》、《Android操作json格式數(shù)據(jù)技巧總結(jié)》、《Android數(shù)據(jù)庫操作技巧總結(jié)》、《Android文件操作技巧匯總》、《Android編程開發(fā)之SD卡操作方法匯總》、《Android開發(fā)入門與進(jìn)階教程》、《Android資源操作技巧匯總》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計有所幫助。
- Android中ListView異步加載圖片錯位、重復(fù)、閃爍問題分析及解決方案
- Android實現(xiàn)Listview異步加載網(wǎng)絡(luò)圖片并動態(tài)更新的方法
- Android程序開發(fā)ListView+Json+異步網(wǎng)絡(luò)圖片加載+滾動翻頁的例子(圖片能緩存,圖片不錯亂)
- Android ListView異步加載圖片方法詳解
- Android實現(xiàn)ListView異步加載圖片的方法
- Android實現(xiàn)上拉加載更多以及下拉刷新功能(ListView)
- Android之ListView分頁加載數(shù)據(jù)功能實現(xiàn)代碼
- Android實現(xiàn)ListView分頁自動加載數(shù)據(jù)的方法
- Android ListView實現(xiàn)上拉加載更多和下拉刷新功能
- 基于Android ListView之加載使用技巧
- Android開發(fā)實現(xiàn)ListView異步加載數(shù)據(jù)的方法詳解
相關(guān)文章
2014值得推薦的10個移動 Web 應(yīng)用程序開發(fā)框架
今天這篇文章向大家推薦10大優(yōu)秀的移動 Web 開發(fā)框架,幫助開發(fā)者更加高效的開發(fā)移動Web應(yīng)用。2014-08-08
Android實現(xiàn)快速滾動FastScrollView效果
這篇文章主要介紹了Android實現(xiàn)快速滾動FastScrollView效果,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08
Android利用RecyclerView實現(xiàn)全選、置頂和拖拽功能示例
列表控件可以說是我們絕大部分App中都會使用的,為了提升交互樂趣,我們經(jīng)常需要在列表中加入置頂、拖拽等操作,下面這篇文章主要介紹了Android利用RecyclerView如何實現(xiàn)全選、置頂和拖拽功能的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-04-04
Android源碼學(xué)習(xí)之組合模式定義及應(yīng)用
將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu),使得用戶對單個對象和組合對象的使用具有一致性,需要了解的朋友可以參考下2013-01-01
Android應(yīng)用中通過Layout_weight屬性用ListView實現(xiàn)表格
這篇文章主要介紹了Android應(yīng)用中通過Layout_weight屬性用ListView實現(xiàn)表格的方法,文中對Layout_weight屬性先有一個較為詳細(xì)的解釋,需要的朋友可以參考下2016-04-04
Android代碼實現(xiàn)AdapterViews和RecyclerView無限滾動
這篇文章主要為大家詳細(xì)介紹了Android代碼實現(xiàn)AdapterViews和RecyclerView無限滾動的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-07-07

