第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

不知為啥,我的首次加載不出來,滑動就可以加載。Debug我也找不出問題

package?com.example.android.demo;

import?android.graphics.Bitmap;
import?android.graphics.BitmapFactory;
import?android.os.AsyncTask;
import?android.os.Handler;
import?android.os.Message;
import?android.support.v4.util.LruCache;
import?android.widget.ImageView;
import?android.widget.ListView;

import?java.io.BufferedInputStream;
import?java.io.IOException;
import?java.io.InputStream;
import?java.net.HttpURLConnection;
import?java.net.MalformedURLException;
import?java.net.URL;
import?java.util.HashSet;
import?java.util.Set;

/**
?*?Created?by?Howy?on?2017/2/12.
?*/

public?class?ImageLoader?{
????private?ImageView?mImageView;
????private?String?mUrl;
????private?LruCache<String,?Bitmap>?mCaches;
????private?ListView?mListView;
????private?Set<NewsAsyncTask>?mTasks;


????public?ImageLoader(ListView?listView)?{
????????this.mListView?=?listView;
????????mTasks?=?new?HashSet<>();
????????int?maxMemory?=?(int)?Runtime.getRuntime().maxMemory();
????????int?cacheSize?=?maxMemory?/?4;
????????mCaches?=?new?LruCache<String,?Bitmap>(cacheSize)?{
????????????@Override
????????????protected?int?sizeOf(String?key,?Bitmap?value)?{
????????????????return?value.getByteCount();
????????????}
????????};
????}

????public?void?addBitmapToCache(String?url,?Bitmap?bitmap)?{
????????if?(getBitmapfromCache(url)?==?null)?{
????????????mCaches.put(url,?bitmap);
????????}
????}

????public?Bitmap?getBitmapfromCache(String?url)?{
????????return?mCaches.get(url);
????}

????private?Handler?handler?=?new?Handler()?{
????????@Override
????????public?void?handleMessage(Message?msg)?{
????????????super.handleMessage(msg);
????????????if?(mImageView.getTag().equals(mUrl))?{
????????????????mImageView.setImageBitmap((Bitmap)?msg.obj);
????????????}
????????}
????};

????public?void?showImageByThread(ImageView?imageView,?final?String?imageUrl)?{
????????mImageView?=?imageView;
????????mUrl?=?imageUrl;
????????new?Thread()?{
????????????@Override
????????????public?void?run()?{
????????????????super.run();
????????????????Bitmap?bitmap?=?getBitmapFromURL(imageUrl);
????????????????Message?message?=?Message.obtain();
????????????????message.obj?=?bitmap;
????????????????handler.sendMessage(message);


????????????}
????????}.start();
????}

????public?Bitmap?getBitmapFromURL(String?urlString)?{
????????Bitmap?bitmap;
????????InputStream?is?=?null;
????????try?{
????????????URL?url?=?new?URL(urlString);
????????????HttpURLConnection?connection?=?(HttpURLConnection)?url.openConnection();
????????????is?=?new?BufferedInputStream(connection.getInputStream());
????????????bitmap?=?BitmapFactory.decodeStream(is);
????????????connection.disconnect();
//????????????Thread.sleep(1000);

????????????return?bitmap;
????????}?catch?(MalformedURLException?e)?{
????????????e.printStackTrace();
????????}?catch?(IOException?e)?{
????????????e.printStackTrace();
????????}?finally?{
????????????try?{
????????????????is.close();
????????????}?catch?(IOException?e)?{
????????????????e.printStackTrace();
????????????}
????????}
????????return?null;
????}

????public?void?showImageByAsyncTask(ImageView?imageView,?final?String?imageUrl)?{
????????Bitmap?bitmap?=?getBitmapfromCache(imageUrl);
????????if?(bitmap?==?null)?{
????????????imageView.setImageResource(R.mipmap.ic_launcher);
????????}?else?{
????????????imageView.setImageBitmap(bitmap);
????????}
????}

????class?NewsAsyncTask?extends?AsyncTask<String,?Void,?Bitmap>?{

????????//????????private?ImageView?mImageView;
????????private?String?mUrl;

????????public?NewsAsyncTask(String?url)?{
//????????????this.mImageView?=?mImageView;
????????????this.mUrl?=?url;
????????}


????????@Override
????????protected?Bitmap?doInBackground(String...?params)?{
????????????String?url?=?params[0];
????????????Bitmap?bitmap?=?getBitmapFromURL(url);
????????????if?(bitmap?!=?null)?{
????????????????addBitmapToCache(url,?bitmap);
????????????}
????????????return?bitmap;
????????}

????????@Override
????????protected?void?onPostExecute(Bitmap?bitmap)?{
????????????super.onPostExecute(bitmap);
????????????ImageView?imageView?=?(ImageView)?mListView.findViewWithTag(mUrl);
????????????if?(imageView?!=?null?&&?bitmap?==?null)?{
????????????????imageView.setImageBitmap(bitmap);
????????????}
????????????mTasks.remove(this);
????????}
????}

????public?void?loadImage(int?start,?int?end)?{

????????for?(int?i?=?start;?i?<?end;?i++)?{
????????????String?url?=?NewsListAdapter.URLS[i];
????????????Bitmap?bitmap?=?getBitmapfromCache(url);
????????????if?(bitmap?==?null)?{
????????????????NewsAsyncTask?mAsyncTask?=?new?NewsAsyncTask(url);
????????????????mAsyncTask.execute(url);
????????????????mTasks.add(mAsyncTask);
????????????}?else?{
????????????????ImageView?imageView?=?(ImageView)?mListView.findViewWithTag(url);
????????????????imageView.setImageBitmap(bitmap);
????????????}
????????}
????}

????public?void?cancelAllTasks()?{
????????if?(mTasks?!=?null)?{
????????????for?(NewsAsyncTask?task?:?mTasks)?{
????????????????task.cancel(false);
????????????}
????????}
????}
}

http://img1.sycdn.imooc.com//58a18806000112ce09660157.jpg

正在回答

2 回答

143行,那個if判斷,應(yīng)該是bitmap != null && imageView != null,你寫成了imageView == null,當(dāng)然不會進(jìn)入給你設(shè)置圖片了

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

世有悲苦 提問者

appreciate.十分感謝
2017-02-17 回復(fù) 有任何疑惑可以回復(fù)我~

解決辦法:將mImageView和mUrl聲明在AsyncTask中,刪除在ImageLorder中的聲明。老師在ImageLorder中聲明是為了Handler使用,我們這里將Handler的內(nèi)容全部刪除其實是沒有影響的。
原理:如果我們在adapter構(gòu)造方法中初始化ImageView,全局只有一個ImageLorder,而在ImageLoder中聲明mImageView和mUrl,那么adapter沒調(diào)用一次ShowImageByAsynctask,mImageViedw和mUrl就會被初始化一次,導(dǎo)致上一個bitmap形成后需要賦值的ImageVIew卻發(fā)生了改變,無法加載成功。
解決辦法:
1:getview()方法每次都new ImageLorder ?不推薦
2:adapter構(gòu)造方法中初始化ImageLorder,但是mImageView和mUrl在Asynctask中聲明,避免被覆蓋

1 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
Android必學(xué)-異步加載
  • 參與學(xué)習(xí)       50618    人
  • 解答問題       326    個

了解Android中的異步加載處理方法,這是面試問的最多的知識點

進(jìn)入課程

不知為啥,我的首次加載不出來,滑動就可以加載。Debug我也找不出問題

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號