gpt4 book ai didi

android - 当我点击其他屏幕元素时,如何防止此 Android ListView 中的图像移动?

转载 作者:行者123 更新时间:2023-11-29 14:29:21 25 4
gpt4 key购买 nike

我之前发表了另一篇关于这个主题的帖子,但我已经根据建议稍微更改了我的代码,但仍然存在同样的问题。如果我单击屏幕上的其他元素,我的图像会不断移动。

这是我调用的代码:

新缩略图(image_main, image_table).execute(image);

image_main 是我的 imageView,image_table 是保存它的表。

 private class Thumbnailer extends AsyncTask<String, Void, Bitmap> {
private ImageView imageView;
private TableLayout imageTable;

public Thumbnailer(ImageView imageView, TableLayout imageTable) {
this.imageView = imageView;
this.imageTable = imageTable;
}

@Override
protected void onPostExecute(Bitmap result) {
imageView.setImageBitmap(result);
imageView.setVisibility(View.VISIBLE);
imageTable.setVisibility(View.VISIBLE);
}
@Override
protected void onProgressUpdate(Void... progress) {
}

@Override
protected Bitmap doInBackground(String... params) {
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeFile(params[0], o);
final int REQUIRED_SIZE=70;

//Find the correct scale value. It should be the power of 2.
int width_tmp=o.outWidth, height_tmp=o.outHeight;
int scale=1;
while(true){
if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE)
break;
width_tmp/=2;
height_tmp/=2;
scale++;
}
//Decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize=scale;
return BitmapFactory.decodeFile(params[0], o2);
}
}

最佳答案

我遇到了类似的问题。我会通过 AsyncTask(它可能通过 HTTP 获取图像)将图像加载到 ListView 中,它似乎在加载正确图像之前的一瞬间加载了错误的图像。就好像 Android 在 HTTP 请求完成之前重用该行,并且 AsyncTasks 有点冲突。

上面的评论证实了这就是正在发生的事情。

我通过在 AsyncTask 启动之前将图像路径放在 ImageView 的标记中来修复它,然后在 AsyncTask 完成后但就在它调用 setImageBitmap 之前检查该标记。

添加这些行:

final String somethingUnique = "put the image path or some other identifier here";
image_main.setTag(somethingUnique);

在这一行之前:

new Thumbnailer(image_main, image_table).execute(image);

现在,在 onPostExecute 中,检查标签:

// if this does not match, then the view has probably been reused
if (((String)imageView.getTag()).equals(somethingUnique)) {
imageView.setImageBitmap(result);
}

关于android - 当我点击其他屏幕元素时,如何防止此 Android ListView 中的图像移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4287412/

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