gpt4 book ai didi

android - 使用 Universal Image Loader 和图像刷新时出现内存不足错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:38:24 24 4
gpt4 key购买 nike

我正在使用通用图像加载器将图像显示为 ListView 中的缩略图,但是我遇到了内存不足错误,当我滚动列表时,新 View 显示的是列表未打开时的第一个 View 的图像滚动阶段,但图像被设置为应有的正确图像。

public class NewAdapter extends BaseAdapter {

private Activity activity;
private ArrayList<String> movieThumbnail;
private ArrayList<String> movieText;
private static LayoutInflater inflater=null;
static File cacheDir;

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(activity)
.memoryCache(new WeakMemoryCache())
.denyCacheImageMultipleSizesInMemory()
.discCache(new UnlimitedDiscCache(cacheDir))
.threadPoolSize(5)
.imageDownloader(new URLConnectionImageDownloader(120 * 1000, 120 * 1000))
.enableLogging()
.build();

DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheOnDisc()
.cacheInMemory()
.bitmapConfig(Bitmap.Config.RGB_565)
.imageScaleType(ImageScaleType.IN_SAMPLE_INT)
.build();

private ImageLoader imageLoader= ImageLoader.getInstance();

public NewAdapter(Activity a, ArrayList<String> movieThumbnail, ArrayList<String> movieText) {
activity = a;
/*data=d;*/
this.movieThumbnail = movieThumbnail;
this.movieText = movieText;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"JunkFolder");
else
cacheDir=activity.getCacheDir();
if(!cacheDir.exists())
cacheDir.mkdirs();

imageLoader.init(config);

}

public int getCount() {
return movieText.size();
}

public Object getItem(int position) {
return position;
}

public long getItemId(int position) {
return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.listrow, null);

TextView text=(TextView)vi.findViewById(R.id.rowListTextView);
ImageView image=(ImageView)vi.findViewById(R.id.movieImage);
text.setText(movieText.get(position));
imageLoader.displayImage(movieThumbnail.get(position), image, options);
return vi;
}
}

这是 ImageView 和 TextView 的 Xml 布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text_relativelayout"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/latest_list_toggle" />


<ImageView
android:id="@+id/movieImage"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginLeft="12dp"
android:layout_marginTop="14dp" />

<TextView
android:id="@+id/rowListTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/movieImage"
android:paddingBottom="10dp"
android:paddingLeft="10dp"
android:paddingRight="21dp"
android:paddingTop="20dp"
android:text="@string/app_name"
android:textColor="@android:color/black"
android:textSize="17sp"
android:textStyle="bold" />
</RelativeLayout>

最佳答案

在 DisplayImageOptions 中设置 .resetViewBeforeLoading()

关于android - 使用 Universal Image Loader 和图像刷新时出现内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13855413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com