Android的addOnPropertyChangedCallback无法使用新值数据更新类旧数据。
创始人
2024-10-07 03:01:17
0

在Android中,使用Data Binding库时,可以使用addOnPropertyChangedCallback方法来监听数据变化。但是,这个方法在更新类的旧数据时可能会出现问题,因为它不能自动使用新值数据来更新旧数据。为了解决这个问题,可以使用ObservableField来包装旧数据,并使用addOnPropertyChangedCallback方法监听包装数据的变化。下面是一个示例代码:

public class MainActivity extends AppCompatActivity {
    private User user = new User();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        binding.setUser(user);

        // 创建一个ObservableField对象,用于包装旧数据
        ObservableField oldName = new ObservableField<>(user.getName());

        // 监听包装数据的变化
        oldName.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
            @Override
            public void onPropertyChanged(Observable sender, int propertyId) {
                // 获取新的值,并更新旧数据
                user.setName(oldName.get());
            }
        });

        // 修改旧数据
        oldName.set("New Name");

        // 更新UI
        binding.invalidateAll();
    }
}

在这个示例中,我们使用ObservableField来包装旧数据user.getName(),并将它传递给addOnPropertyChangedCallback方法。当旧数据发生变化时,可以通过调用oldName.get()获取新的值,并通过user.setName()方法更新旧数据。然后,我们调用binding.invalidateAll()方法来更新UI。

相关内容

热门资讯

4分钟辅助!aapoker a... 4分钟辅助!aapoker ai插件,hhpoker是真的假的,烘培教程(有挂助手)1、实时hhpo...
九分钟辅助!pokemmo手机... 九分钟辅助!pokemmo手机版修改器,大菠萝手游辅助,诀窍教程(了解有挂)1、pokemmo手机版...
6分钟辅助!wepoker插件... 您好,wepoker插件程序激活码这款游戏可以开挂的,确实是有挂的,需要了解加去威信【1367043...
5分钟辅助!pokemmo脚本... 5分钟辅助!pokemmo脚本辅助器,poker红龙辅助,烘培教程(有挂攻略)1、用户打开应用后不用...
三分钟辅助!aapoker安装... 三分钟辅助!aapoker安装包怎么使用,aa poker辅助,经验教程(有挂教程)1、实时aapo...
六分钟辅助!德普之星app安卓... 六分钟辅助!德普之星app安卓版破解版,hhpoker到底可以作弊吗,资料教程(有挂秘籍)1、打开软...
6分钟辅助!hhpoker辅助... 6分钟辅助!hhpoker辅助挂是真的吗,拱趴大菠萝怎么开挂,烘培教程(有挂助手)1、用户打开应用后...
三分钟辅助!德州局怎么透视,p... 三分钟辅助!德州局怎么透视,pokermaster脚本,练习教程(有挂解密)1、许多玩家不知道德州局...
第3分钟辅助!德州透视hhpo... 第3分钟辅助!德州透视hhpoker,wepoker破解是真的还是假的,指南书教程(讲解有挂)1、首...
第2分钟辅助!pokemmo脚... 第2分钟辅助!pokemmo脚本辅助,aapoker怎么设置抽水,资料教程(有挂工具)1、首先打开a...