第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

屬性更改時 UI 不更新

屬性更改時 UI 不更新

泛舟湖上清波郎朗 2023-10-27 10:48:41
當我從 MainActivity 更新 LoginViewModel 中的 User 屬性時,我的 UI 沒有改變。(卡在這個問題上 2 天了,找不到解決方案)我的 User 類擴展了 BaseObservable(添加了 @Bindable 和 notificationPropertyChanged()),但我不知道我還應(yīng)該做什么。這些是課程:用戶:public class User extends BaseObservable {    protected String  userName;    protected String lastName;    public User(String userName, String lastName) {        this.userName = userName;        this.lastName = lastName;        notifyPropertyChanged(BR._all);    }    @Bindable    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;        notifyPropertyChanged(BR.userName);    }    @Bindable    public String getLastName() {        return lastName;    }    public void setLastName(String lastName) {        this.lastName = lastName;        notifyPropertyChanged(BR.lastName);    }}視圖模型:public class LoginViewModel extends ViewModel {    private User user;    public LoginViewModel() {        user = new User("Pero","Peric");    }    public User getUser() {        return user;    }    public void setUser(User user) {        this.user = user;    }    public String getUserName()    {        return user.getUserName();    }    public void setUserName(String userName)    {        user.setUserName(userName);    }    public String getLastName()    {        return user.getLastName();    }    public void setLastName(String lastName)    {        user.setUserName(lastName);    }}
查看完整描述

1 回答

?
蝴蝶刀刀

TA貢獻1801條經(jīng)驗 獲得超8個贊

問題是我:


a)hadnt implement Observerble interface to ViewModel(I susspect that DataBinding 

    adds/removes his listener through that methods)

b)made get methods @Bindable,and notify notifyPropertyChanged() in seters,

c)add property in ViewModel of type PropertyChangeRegistry

d)add notifyPropertyChanged(int fieldID) method

視圖模型:


public class LoginViewModel extends ViewModel implements Observable {

    private User user;

    private PropertyChangeRegistry callbacks;



    public LoginViewModel() {

        user = new User("Karlo","maricevic");

        callbacks = new PropertyChangeRegistry();

    }


    public User getUser() {

        return user;

    }


    public void setUser(User user) {

        this.user = user;

    }


    @Bindable

    public String getUserName()

    {

        return user.getUserName();

    }


    public void setUserName(String userName)

    {

        user.setUserName(userName);

        notifyPropertyChanged(BR.userName);

    }


    @Bindable

    public String getLastName()

    {

        return user.getLastName();

    }



    public void setLastName(String lastName)

    {

        user.setUserName(lastName);

    }


    @Override

    public void addOnPropertyChangedCallback(OnPropertyChangedCallback callback) {

        callbacks.add(callback);

    }


    @Override

    public void removeOnPropertyChangedCallback(OnPropertyChangedCallback callback) {

        //callbacks.remove(callback);

    }


    void notifyPropertyChanged(int fieldId)

    {

        callbacks.notifyCallbacks(this,fieldId,null);

    }

}

PS:在這個例子的小實驗之后,你不需要用戶擴展 BaseObservable 來從 ViewModel 更新 UI


查看完整回答
反對 回復(fù) 2023-10-27
  • 1 回答
  • 0 關(guān)注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號