如何通过无限循环字符串数组值来更新TextView



我在strings.xml中创建了一个包含5个字符串的字符串数组。这就是我初始化它的方式:

adLoopValues = findViewById(R.id.ad_loop_values); // TextView
adValues = getResources().getStringArray(R.array.banner_ad_values);

使用这个答案中的代码,我循环浏览它们:

final android.os.Handler handler = new android.os.Handler();
handler.post(new Runnable() {
int i = 0;
@Override
public void run() {
adLoopValues.setText(adValues[i]);
i++;
if (i == adValues.length) {
i = 0;
} else {
//5 sec
handler.postDelayed(this, 1000 * 5);
}
}
});

上面的代码第一次工作,它显示字符串数组中的第一个字符串,然后在5秒钟后显示下一个字符串并转到最后一个。为了无限循环,我放置了if块,并将I重置为0,所以在最后一个字符串之后,它可以再次从第一个值开始,但这并没有发生,在最后一条字符串显示之后,什么都没有发生。它不是从第一个值开始的。

您不会在中重新启动处理程序

if (i == adValues.length) {
i = 0;
}

删除else并在if阻止之后使用handler.postDelayed(this, 1000 * 5);

您可以简单地获得延迟并用模计算索引。

final android.os.Handler handler = new android.os.Handler();
handler.post(new Runnable() {
int i = 0;
@Override
public void run() {
adLoopValues.setText(adValues[i % addValues.length]);

handler.postDelayed(this, 1000 * 5);
i++;
}
});

最新更新