我有三个字符串
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();
}
}
}
}
答案 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 ......它将起作用