如何不断更新文本视图

时间:2019-05-07 23:19:28

标签: java android loops

我正在尝试使用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));
            });
        }
    }

使用此方法不会更新结果文本视图。我希望它不断更新文本视图,以便显示搜索栏的编号。

2 个答案:

答案 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);

    }       
});