Я пытаюсь обновить пользовательский интерфейс элементов RecyclerView, используя наблюдаемый объект данных, у этого объекта есть логическая переменная «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}"/>
теперь, когда «checker» равен true, таймер будет работать и появляться в первом элементе, но при добавлении нового элемента в список и установке «checker» в true таймер фактически работает, но появляется в первом элементе в список, так что теперь первый список работает все таймеры.
так что, пожалуйста, кто-нибудь может до меня доказать, что не так в моем коде, и предоставить мне наилучшую практику для получения чистого чистого результата?