首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >睡在onItemClick里面

睡在onItemClick里面
EN

Stack Overflow用户
提问于 2014-10-04 18:07:09
回答 1查看 130关注 0票数 0

我希望在OnItemClick中的两件事情之间有一些延迟,但实际上什么都没有发生。如果我运行它,并点击,一切都停止,只要是设置睡眠,然后它改变了图片在同一时间,我想改变第一张照片。然后睡觉然后换另一个。

代码语言:javascript
复制
 gv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
           // clicks=0;

            int row_no = position / 3;
            int col_no = position % 3;

            if(clicks==0)
            {
                ((ImageView) gv.getChildAt(position)).setImageResource(R.drawable.kor);
                matrix[row_no][col_no]=1;
               // clicks++;
            }

           if(gepLephet())
            {
                try {
                    Thread.sleep(400);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                finally{
                    int posAi=gep();
                    ((ImageView) gv.getChildAt(posAi)).setImageResource(R.drawable.iksz);
                    matrix[posAi/3][posAi%3]=2;
                }

               // Toast.makeText(getApplicationContext(),"Random: "+posAi, Toast.LENGTH_SHORT).show();
            }

           /* else if(clicks==1)
            {
                ((ImageView) gv.getChildAt(position)).setImageResource(R.drawable.iksz);
                matrix[row_no][col_no]=2;
                clicks--;
            }*/
            // Toast.makeText(getApplicationContext(), "position: " + position +"Random: "+posAi, Toast.LENGTH_SHORT).show();
          // if(matrix[0][0]==matrix[0][1]&&matrix[0][1]==matrix[0][2]){text.setText("WIN");}
            if(isWinO())
            {
                text.setText("O WIN");
            }
            if(isWinX())
            {
                text.setText("X WIN");
            }



        }
        ;
    });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-04 18:17:40

onItemClick方法在UI线程中运行,所以当您调用Thread.sleep时,UI胎面会睡着,屏幕上什么也不会改变。永远不要停止UI线程,它会被用户视为滞后或错误。若要在延迟之后更改UI,可以使用ViewView方法。示例:

代码语言:javascript
复制
View view;
view.postDelayed(new Runnable() {
    @Override public void run() {
        //code here will be run after 400ms delay
    }
}, 400);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26195653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档