Android:在 onItemClickListener 中单击时更改图像两次



我在我的活动类的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);
    }
}

最新更新