我在我的活动类的onCreate()方法中有下面提到的代码。对于某些人来说,这可能很明显,这是行不通的,因为图像只渲染一次,在执行onItemClick之后很长时间。
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
ImageView imageView=(ImageView)view.findViewById(R.id.adaptorItemImageView);
if(someCOMPLEXlogic)
{ // Line 1
imageView.setImageResource(XXXXXX);
// Line 2
Thread.sleep(2000);
// how to show one image, wait for 2 secs, and then show another one?
// Line 3
imageView.setImageResource(YYYYYY);
}
}
});
结果,我只看到图像YYYYYY。我尝试使用线程和 AsyncTask,将第 2 行和第 3 行替换为对新 Thread() 的调用,该 Thread() 执行相同的操作,但出现以下错误
A different thread cannot access UI thread views,
(Something Like that, I do not remember,apologies)
有人可以给我解决方法来实现相同的行为而无需调用新活动。也有人可以解释为什么首先会出现这个问题(Android不会立即渲染图像,它是如何工作的?
调用视图的 postDelay 方法,如下所示。不过,您可以将图像视图更改为最终视图。
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
final ImageView imageView=(ImageView)view.findViewById(R.id.adaptorItemImageView);
if(someCOMPLEXlogic)
{
imageView.setImageResource(XXXXXX);
imageView.postDelayed(new Runable() {
@Override
public void run() {
imageView.setImageResource(YYY);
}
}, 2000);
}
}