我嘗試創建一個獲取圖像並將其緩存在內存中的類,但它不會將值返回給我的列表適配器類。當我調試時,我可以在GetImagesBitmap中看到位圖值,但在返回到ListTestAdapter後,該值爲空。任何人都可以引導我。謝謝。Android Bitmap從其他類中返回null
這是我GetImagesBitmap類將返回值ListTestAdapter
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.ImageView;
import java.net.URL;
public class GetImagesBitmap extends AsyncTask<Void, Void, Bitmap> {
private final String TAG = "MY_MESSAGE";
private Bitmap bitmap;
private String url;
public GetImagesBitmap() {
}
public GetImagesBitmap(String url) {
this.url = url;
}
@Override
protected Bitmap doInBackground(Void... params) {
Bitmap bitmap1 = (Bitmap) ImageCache.getInstance().getLru().get(url);
if (bitmap == null) {
try {
URL newurl = new URL(url);
bitmap1 = BitmapFactory.decodeStream(newurl.openConnection().getInputStream());
ImageCache.getInstance().getLru().put(url, bitmap1);
} catch (Exception e) {
Log.e(TAG, e.toString());
}
}
return bitmap1;
}
@Override
protected void onPostExecute(Bitmap bitmap2) {
this.bitmap = bitmap2;
}
public Bitmap getBitmap() {
return bitmap;
}
}
ListTestAdapter.java
package com.example.chaifs.test.adapter;
import android.content.Context;
import android.graphics.Bitmap;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.ToggleButton;
import com.example.chaifs.test.R;
import com.example.chaifs.test.controller.GetImagesBitmap;
import com.example.chaifs.test.model.*;
import java.util.List;
public class ListTestAdapter extends BaseAdapter {
private final String TAG = "MY_MESSAGE";
private List<Test> mItems;
private LayoutInflater mInflater;
public ListTestAdapter(Context context, List<Test> listTest) {
this.setItems(listTest);
this.mInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return (getItems() != null && !getItems().isEmpty()) ? getItems().size() : 0;
}
@Override
public Test getItem(int position) {
return (getItems() != null && !getItems().isEmpty()) ? getItems().get(position) : null;
}
@Override
public long getItemId(int position) {
return (getItems() != null && !getItems().isEmpty()) ? getItems().get(position).getId() : position;
}
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
final ViewHolder holder;
View v = convertView;
if (v == null) {
v = mInflater.inflate(R.layout.list_test, parent, false);
holder = new ViewHolder();
holder.imgView = (ImageView) v.findViewById(R.id.imgView);
holder.txtId = (TextView) v.findViewById(R.id.txt_id);
holder.button1 = (ToggleButton) v.findViewById(R.id.tgl_status);
holder.button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((ListView) parent).performItemClick(v, position, 0);
}
});
v.setTag(holder);
} else {
holder = (ViewHolder) v.getTag();
}
// fill row data
Test currentItem = getItem(position);
if (currentItem != null) {
holder.txtId.setText(currentItem.getId().toString());
holder.button1.setChecked(currentItem.getBookmarkStatus().equals("true") ? true : false);
//this part which cannot get the bitmap return value
GetImagesBitmap getImagesBitmap = new GetImagesBitmap(currentItem.getImageURL());
getImagesBitmap.execute();
Bitmap bitmap = getImagesBitmap.getBitmap();
Log.e(TAG, "size of bitmap" + String.valueOf(bitmap.getByteCount()));
holder.imgView.setImageBitmap(bitmap);
}
return v;
}
public List<Test> getItems() {
return mItems;
}
public void setItems(List<Test> mItems) {
this.mItems = mItems;
}
class ViewHolder {
ImageView imgView;
TextView txtId;
ToggleButton button1;
}
}
如果正在從互聯網加載圖片,然後使用畢加索圖書館。 –