我正在尝试使用Android Studio制作应用,并且希望不断更新文本视图。
起初我以为我应该使用循环,但由于某种原因最终甚至无法运行。
TextView amount = findViewById(R.id.amountTextView);
final SeekBar seekBar = findViewById(R.id.seekBar);
int p = seekBar.getProgress() + 1;
amount.setText(String.valueOf(p));
});
}
}
使用此方法不会更新结果文本视图。我希望它不断更新文本视图,以便显示搜索栏的编号。
答案 0 :(得分:0)
您将需要一个事件来更新SeekBar和TextView的状态,在这种情况下,我使用Handler(android.os)每100毫秒更新一次视图,但是您可以使用另一个事件,例如加载Web服务或其他。
在您的情况下,它不会更新,因为您只是更新变量的状态,而从不更新seekbar的状态,这就是它永远不会增加当前状态的原因。
private void startLoopUntilEnd() {
final Handler handler = new Handler();
final Runnable runnable = new Runnable() {
@Override
public void run() {
int progress = seekBar.getProgress();
textView.setText(String.valueOf(progress));
progress++;
seekBar.setProgress(progress);
startLoopUntilEnd();
}
};
if (currentState <seekBar.getMax()){
handler.postDelayed(runnable,100);
}
}
对于Activity,可以从onCreate调用此方法,对于Fragment,可以从onResume调用此方法,此方法将直到SeekBar递归完成。 如果要更改seekBar的最大值,可以在xml或代码中进行设置。
答案 1 :(得分:0)
使用onSeekBarChangeListener
:
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
amount.setTextprogress);
}
});