亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

帶有 BindingAdapter 的 MutableLiveData 不更新視圖的可見性

帶有 BindingAdapter 的 MutableLiveData 不更新視圖的可見性

飲歌長嘯 2022-11-10 16:41:35
即使我多次更新 LiveData,我的 BindingAdapter 也只運行一次。public class ButtonViewBindingAdapter{    @BindingAdapter("hideIfZero")    public static void setHideIfZero(View view, MutableLiveData<Integer> currentPosition)    {        view.setVisibility(currentPosition.getValue() == 0 ? View.GONE : View.VISIBLE);    }}<layout xmlns:android="http://schemas.android.com/apk/res/android"        xmlns:app="http://schemas.android.com/apk/res-auto">    <data>        <variable            name="viewModel"            type="com.package.PermissionsViewModel"/>        <variable            name="clickHandler"            type="com.package.PermissionsActivity.ClickHandler"/>    </data>    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="match_parent">        <Button            android:id="@+id/buttonNext"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentRight="true"            android:layout_alignParentBottom="true"            android:background="@null"            android:onClick="@{() -> clickHandler.nextSlide()}"            android:text="@string/intro_next"            android:textColor="@android:color/white"            />        <Button            android:id="@+id/buttonBack"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_alignParentLeft="true"            android:layout_alignParentBottom="true"            android:background="@null"            android:onClick="@{() -> clickHandler.previousSlide()}"            android:text="@string/intro_back"            android:textColor="@android:color/white"            app:hideIfZero="@{viewModel.currentSlidePosition}"/>    </RelativeLayout></layout>當我更新視圖模型中的值時,可見性仍然沒有改變。BindingAdapter 不會多次運行。我在這里想念什么?我希望它在位置為 0 時隱藏,否則它應該顯示。
查看完整描述

2 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

如果您未能調用setLifecycleOwner()綁定對象,數據綁定仍然有效,但無法獲得任何更新。IIRC,您在綁定時獲得了初始值LiveData,但之后就沒有了。

我剛剛提交了一個功能請求,以讓數據綁定在您未能調用時更明顯地抱怨setLifecycleOwner()。


查看完整回答
反對 回復 2022-11-10
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

例子:

binding.lifecycleOwner = this

這是片段/活動等。


查看完整回答
反對 回復 2022-11-10
  • 2 回答
  • 0 關注
  • 207 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號