文本视图始终在我的列表中设置最后一个文本视图中的文本



我正在尝试设置适配器中列表视图中播放的当前曲目的文本视图。发生的情况是文本视图的位置错误,它始终设置列表中最后一个可用文本视图中的文本。我就是这样做的。

public void startPlayProgressUpdater(final SeekBar seek, final Button start) {
    seek.setProgress(mediaPlayer.getCurrentPosition());

    if (mediaPlayer.isPlaying()) {
        Runnable notification = new Runnable() {
            public void run() {
                startPlayProgressUpdater(seek,start);
                 currentTime.setText(getTimeString(mediaPlayer.getDuration() - mediaPlayer.getCurrentPosition()));

            }
        };
        handler.postDelayed(notification, 1000);
    } else {
        mediaPlayer.pause();
        seek.setProgress(0);
    }
}

这是我的代码

private Runnable updateSongTime = new Runnable() {
        public void run() {
            startTime = mediaPlayer.getCurrentPosition();
            playTime.setText(String.format("%02d:%02d/%02d:%02d",
                            TimeUnit.MILLISECONDS.toMinutes((long) startTime),
                            TimeUnit.MILLISECONDS.toSeconds((long) startTime) -
                                    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.
                                            toMinutes((long) startTime)),
                            TimeUnit.MILLISECONDS.toMinutes((long) finalTime),
                            TimeUnit.MILLISECONDS.toSeconds((long) finalTime) -
                                    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.
                                            toMinutes((long) finalTime)))
            );
            seekBar.setProgress((int)startTime);
            if(mediaPlayer.isPlaying())
                myHandler.postDelayed(this, 100);
        }
    };

和我的播放按钮

 play.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(mediaPlayer.isPlaying()){
                    play.setBackgroundResource(R.drawable.ic_action_play);
                    mediaPlayer.pause();
                }
                else {
                    mediaPlayer.start();
                    finalTime = mediaPlayer.getDuration();
                    startTime = mediaPlayer.getCurrentPosition();
                    seekBar.setMax((int) finalTime);
                    seekBar.setProgress((int) startTime);
                    myHandler.postDelayed(updateSongTime, 100);
                    play.setBackgroundResource(R.drawable.ic_action_pause);
                }
            }
        });

看看它是否对你有帮助。

安吉特

最新更新