按顺序重复更改文本视图的文本

时间:2014-10-28 10:11:48

标签: android textview

我有三个字符串

String one="Connecting.";
String two="Connecting..";
String three="Connecting...";

我有一个textView,我想要的是按此顺序将文本设置为textview .. 一个 - >两个 - >三个 - >一个 - >两个 - >三个等等,直到完成该过程。

我是在基于值的for循环中完成的,即

if(value%3==0){
                            tx.setText(one);
                        }
                        else if(value%3==1){
                            tx.setText(two);
                        }
                        else
                        {
                            tx.setText(three);
                        }

This is done inside a thread and it is working well.

但我不想依赖“价值”..我希望在完成流程之前,文本按照上面提到的顺序改变。 我知道它很模糊,但我不知道如何做到这一点。 如果有人可以提供任何暗示,请。

    code:


 public void startProgress(View view) {

        bar.setProgress(0);
        tx.setText("Connect");
        new Thread(new Task()).start();
    }

    class Task implements Runnable {
        @Override
        public void run() {
            for (int i = 0; i <= 10; i++) {
                final int value = i;
                try {
                    Thread.sleep(500);
                    runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            bar.setProgress(value);

                        String one="Connecting.";
                        String two="Connecting..";
                        String three="Connecting...";


                        if(value%3==0){
                            tx.setText(one);
                        }
                        else if(value%3==1){
                            tx.setText(two);
                        }
                        else
                        {
                            tx.setText(three);
                        }


                        }
                    });


                } catch (InterruptedException e) {
                    e.printStackTrace();
                }



            }
        }

    }

2 个答案:

答案 0 :(得分:3)

让像value这样的计数器保持递增是有意义的。但你可以更简单地做到这一点:

String[] texts = new String[3] {"Connecting.", "Connecting..", "Connecting..."};
int value = 0;

// ...

tx.setText(texts[value]);
value = (value+1)%3;

这样,你不需要你的大杂乱的if声明。您需要找到另一种在完成作业时通知您的线程的方法,而不仅仅是具有固定数量的迭代。

答案 1 :(得分:0)

使用TextSwitcher而不是TextView ......它将起作用