ReclerView的ViewHolder中的CountDownTimer切换位置

时间:2018-04-13 07:31:17

标签: android android-recyclerview recycler-adapter countdowntimer

在BindViewHolder方法中我使用了 -

new CountDownTimer(10000, 1000) {

        public void onTick(long millisUntilFinished) {
            holder.timer_tv.setText(String.format("00:%02d", millisUntilFinished / 1000));
        }

        public void onFinish() {
            holder.switchScreen();

        }
    }.start();

并且在持有人中我使用了switchScreen方法

    private void switchScreen() {
        System.out.println("SWITCH ADAPTER POSITION: " + getAdapterPosition());
        if (getAdapterPosition() < list.size() - 1) {
            recyclerView.scrollToPosition(getAdapterPosition() + 1);
            System.out.println("SWITCH1: " + getAdapterPosition());
        } else {
            System.out.println("SWITCH2: " + getAdapterPosition());
            context.startActivity(new Intent(context, WordTestResultActivity.class).putExtra("correct_words", correct_words).putExtra("total_words", total_words));
            ((WordTestActivity) context).finish();
        }
    }

示例: 如果我在RecyclerView中有4个项目,那么switchScreen()会跳过一些项目,但我希望每个项目逐个显示。

如果我在持有人中使用按钮,实现其点击侦听器,并且在点击事件中我使用此切换屏幕方法,它可以逐个显示每个项目。

1 个答案:

答案 0 :(得分:0)

目前问题出在switchScreen()方法中。对于按钮单击事件,它工作正常,但对于此CountDownTimer,我必须通过从 -

删除+1来更改switchScreen()方法
recyclerView.scrollToPosition(getAdapterPosition());

并从 -

中删除-1
if (getAdapterPosition() < list.size()) {

但是它也会产生一些问题,因为现在计时器在第一项之后没有在textview上更新,对于下一项的其余部分它会坚持到00:01,它也不会进入switchScreen方法的其他部分()之后最后一项显示。