我的Activity类'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图像。 我尝试使用Threads和AsyncTask,用一个新的Thread()替换第2行和第3行,它执行相同的操作,但是有错误,如
A different thread cannot access UI thread views,
(Something Like that, I do not remember,apologies)
有人可以给我解决方法,以便在不调用新活动的情况下实现相同的行为。 也有人可以解释为什么这个问题首先出现(Android不立即渲染图像,它是如何工作的?)
答案 0 :(得分:2)
调用视图的postDelayed方法,如下所示。您可以将imageView更改为final。
@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);
}
}