Android:在onItemClickListener上点击两次onClick

时间:2014-12-25 18:41:15

标签: 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,用一个新的Thread()替换第2行和第3行,它执行相同的操作,但是有错误,如

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

有人可以给我解决方法,以便在不调用新活动的情况下实现相同的行为。 也有人可以解释为什么这个问题首先出现(Android不立即渲染图像,它是如何工作的?)

1 个答案:

答案 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);
    }
}