Android:在onItemClickListener 中的onClick 更改图像两次

标签 android onitemclicklistener

我的 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,将第 2 行和第 3 行替换为对新 Thread() 的调用,它们执行相同的操作,但出现类似

的错误
A different thread cannot access UI thread views, 
 (Something Like that, I do not remember,apologies)

有人可以给我解决方法来实现相同的行为而不调用新的 Activity 吗? 也有人可以解释为什么首先会出现这个问题(Android 不会立即渲染图像,它是如何工作的?)

最佳答案

调用 View 的 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);
    }
}

关于Android:在onItemClickListener 中的onClick 更改图像两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27649795/

相关文章:

android - 带有改造的 java.net.SocketTimeoutException

android - ListView 在滚动时崩溃

android - 如何在自定义 RecyclerView 适配器中使用 startActivity(intent) 启动新 Activity ?

android - 通过单击 ListView 项目发送字符串

android - GridView 中的 onItemClickListener 在显示 WebView 组件时不捕获点击事件

android - 由于绝对定位的抽屉,移动键盘会推高内容

android - 应用程序详细信息页面的 Intent

java - Android Studio 中的秒表按钮崩溃

android - 当适配器包含带有 onClickListener 的按钮时,OnItemClickListener 无法正常工作

android - 可重新排序 ListView :Multiple widgets used the same GlobalKey