使用可观察的数据对象更新RecyclerView项Ui仅适用于列表中的第一项

时间:2019-07-07 13:08:55

标签: android android-recyclerview observable android-databinding

我正在尝试使用可观察的数据对象更新RecyclerView的Ui,该对象具有布尔变量“ checker”,并且当checker = true时, 自从我在其中声明@BindingAdapter以来,@ BindingAdapter中的一个函数会从同一对象类中触发,并且计时器将在该项目中工作


public class TestObject extends BaseObservable {



    private static final String TAG = "TestObject";
    private boolean checker;
    private CountDownTimer timer;
    private long time;



    public TestObject(){
        this.time=120000;
    }





    @Bindable
    public boolean getChecker() {
        return checker;
    }

    public void setChecker(boolean checker) {
        this.checker = checker;
        notifyPropertyChanged(BR.checker);

    }




    @BindingAdapter({"bind:opject", "bind:checker"})
    public static   void loadSlot (View view, TestObject opject, boolean checker){

        if(checker){
            update(opject,view);

        }

    }






    private  void setTimer(TestObject object, final View view) {
        object.timer=new CountDownTimer(object.time,1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                ((TextView)view.getRootView().findViewById(R.id.timer_textview)).setText(getDateFromMillis(millisUntilFinished,"mm:ss"));
            }

            @Override
            public void onFinish() {

            }
        };
        timer.start();
    }
}



此处是布局

<android.support.constraint.ConstraintLayout
     android:layout_width="match_parent"
        android:layout_height="80dp"
        android:background="@color/colorPrimary">


        <TextView
            android:id="@+id/timer_textview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:text="00:00"
            bind:checker="@{object.checker}"
            bind:opject="@{object}"/>

现在,当“检查器”为true时,计时器将工作并出现在第一项中,但是当将新项目添加到列表并将“检查器”设置为true时,计时器实际上是工作的,但将出现在第一项中。该列表,所以现在第一个运行所有计时器的列表。

所以请任何人直到我能告诉我代码中错误的部分并为我提供最佳实践以获得干净的结果?

0 个答案:

没有答案