Android實(shí)現(xiàn)ListView異步加載的方法(改進(jìn)版)
本文實(shí)例講述了Android實(shí)現(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);
}
這個(gè)是在前面一篇http://www.dbjr.com.cn/article/90408.htm基礎(chǔ)上修改的。主要為了加入LruCache
后來發(fā)現(xiàn),這種方法要不停的開辟新的線程,效率并不是很高。最后改為加入一后臺線程,不停從后進(jìn)先出隊(duì)列中取出任務(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è)計(jì)有所幫助。
- Android中ListView異步加載圖片錯(cuò)位、重復(fù)、閃爍問題分析及解決方案
- Android實(shí)現(xiàn)Listview異步加載網(wǎng)絡(luò)圖片并動態(tài)更新的方法
- Android程序開發(fā)ListView+Json+異步網(wǎng)絡(luò)圖片加載+滾動翻頁的例子(圖片能緩存,圖片不錯(cuò)亂)
- Android ListView異步加載圖片方法詳解
- Android實(shí)現(xiàn)ListView異步加載圖片的方法
- Android實(shí)現(xiàn)上拉加載更多以及下拉刷新功能(ListView)
- Android之ListView分頁加載數(shù)據(jù)功能實(shí)現(xiàn)代碼
- Android實(shí)現(xiàn)ListView分頁自動加載數(shù)據(jù)的方法
- Android ListView實(shí)現(xiàn)上拉加載更多和下拉刷新功能
- 基于Android ListView之加載使用技巧
- Android開發(fā)實(shí)現(xiàn)ListView異步加載數(shù)據(jù)的方法詳解
相關(guān)文章
android控件實(shí)現(xiàn)多張圖片漸變切換
這篇文章主要為大家詳細(xì)介紹了android控件實(shí)現(xiàn)多張圖片漸變切換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
Android 擴(kuò)大 View 的點(diǎn)擊區(qū)域的方法
這篇文章主要介紹了Android 擴(kuò)大 View 的點(diǎn)擊區(qū)域的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04
Java操作Ant壓縮和解壓文件及批量打包Anroid應(yīng)用
這篇文章主要介紹了使用Java操作Ant壓縮和解壓文件以及批量打包Anroid應(yīng)用的教程,Ant是一個(gè)自動化部署工具,用來處理zip和tar文件非常方便,需要的朋友可以參考下2016-02-02
Android自定義View的使用及其原理知識點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是關(guān)于Android自定義View的使用及其原理知識點(diǎn)總結(jié)內(nèi)容,需要的朋友們可以學(xué)習(xí)下。2019-08-08
Android實(shí)現(xiàn)自動提取短信驗(yàn)證碼功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)自動提取短信驗(yàn)證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-01-01
Android實(shí)現(xiàn)手勢滑動多點(diǎn)觸摸放大縮小圖片效果
這篇文章主要介紹了Android實(shí)現(xiàn)手勢滑動多點(diǎn)觸摸放大縮小圖片效果的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-02-02
Android編程實(shí)現(xiàn)圖片拍照剪裁的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)圖片拍照剪裁的方法,涉及Android調(diào)用裁剪工具操作圖片的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-12-12
5個(gè)Android開發(fā)中比較常見的內(nèi)存泄漏問題及解決辦法
本文主要介紹了5個(gè)Android開發(fā)中比較常見的內(nèi)存泄漏問題及解決辦法,具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02
Android開發(fā)中使用Volley庫發(fā)送HTTP請求的實(shí)例教程
這篇文章主要介紹了Android開發(fā)中使用Volley庫發(fā)送HTTP請求的實(shí)例教程,包括創(chuàng)建Volley單例的基本知識與取消Request請求的技巧等,需要的朋友可以參考下2016-05-05

