有两种方法,简单的一种:
在viewModel中通过传入的view获得context来实现:
class MainActivityVM { 。。。 fun onClick(view: View) { val context = view.context val intent = Intent(context, RecycleViewActivity::class.java) context.startActivity(intent) } 。。。 }
xml:
android:onClick="@{(v) -> mainActivityVM.onClick(v)}"
第二种通过回调,这种方法比较复杂:
首先声明一个DataBindingUtils:
class DataBindingUtils { companion object { var commonMap = ArrayMap<BaseActivity, ArrayMap<Observable, Observable.OnPropertyChangedCallback>>() fun addCallBack(baseActivity: BaseActivity, observable: Observable?, callback: Observable.OnPropertyChangedCallback){ var callbackArrayMap = commonMap[baseActivity] if (callbackArrayMap == null) { callbackArrayMap = ArrayMap() commonMap[baseActivity] = callbackArrayMap } observable?.addOnPropertyChangedCallback(callback) callbackArrayMap[observable] = callback } fun removeCallBack(activity: BaseActivity) { var callbackArrayMap = commonMap[activity] if (callbackArrayMap != null) { for (observable in callbackArrayMap.keys) { observable.removeOnPropertyChangedCallback(callbackArrayMap[observable]) } } } } }
然后在MainActivity中调用:
private fun addCallBack() { DataBindingUtils.addCallBack( this, mainActivityVM?.goToSimple, object : Observable.OnPropertyChangedCallback() { override fun onPropertyChanged(p0: Observable?, p1: Int) { goToNext() } }) } fun goToNext() { startActivity<RecycleViewActivity>() }
接着在viewModel中创建一个回调通知:
class MainActivityVM { var goToSimple = ObservableInt() fun goToNext(view: View) { //view这个值看似没有引用,但是不能删去,删去会报错,可能 和onClicked(view)对应 goToSimple.notifyChange() } 。。。
最后在xml中:
android:onClick="@{mainActivityVM::goToNext}"
参考:
1.复杂方法:https://www.jianshu.com/p/564bb7f21fcc
2.Best Practice:https://stackoverflow.com/questions/40475334/best-practice-for-android-mvvm-startactivity
相关推荐
在这个“DataBinding实现RecyclerView的Demo”中,我们将探讨如何利用DataBinding来优雅地处理RecyclerView的数据展示。 首先,我们需要理解DataBinding的基本概念。DataBinding库是Google推出的一种框架,它可以将...
DataBinding onClick的七种点击方式 DataBinding onClick的七种点击方式是 ...DataBinding onClick 的七种点击方式可以满足不同的需求和场景,但是需要根据实际情况选择合适的方式,以确保代码的可维护性和可读性。
在Android开发中,ViewModel、LiveData和DataBinding是Google推荐的Android架构组件,它们共同构建了一个高效、健壮且响应式的应用框架。这三个组件在现代Android应用设计中扮演着至关重要的角色,尤其对于处理用户...
现在,将Databinding与RecyclerView结合,可以实现更优雅的数据绑定和列表渲染。首先,你需要在RecyclerView的Adapter中使用Databinding。创建一个继承自`RecyclerView.Adapter`的类,如`MyAdapter`,并在其中包含一...
在DataBinding中结合使用ViewStub,可以实现更灵活的视图管理。 **DataBinding库的介绍** DataBinding库通过在XML布局文件中定义绑定表达式,将数据自动绑定到对应的UI组件上,从而避免了手动设置视图的值。它引入...
在Android开发中,DataBinding库是Google推出的一种官方数据绑定框架,它可以帮助开发者更方便地实现视图与数据模型之间的绑定,从而简化UI逻辑,提高代码的可读性和可维护性。本文将深入探讨DataBinding的基本用法...
在Android开发中,DataBinding、ViewPager和Fragment是三个非常重要的组件,它们分别负责数据绑定、页面滑动和模块化视图管理。本教程将深入探讨如何将这些技术结合使用,实现一个高效、灵活的封装解决方案。 **...
DataBinding 是 Android 开发中一个强大的工具,通过它可以实现数据模型与用户界面的自动绑定,简化了代码结构,提高了开发效率。理解 DataBinding 的使用方法和原理,有助于构建更加优雅、易于维护的 Android 应用...
利用 Databinding 来实现自定义字体功能,这个可以有。.zip,aacustomfont是一个轻量级的xml自定义字体活页夹,直接位于textview、button、edittext、radiobutton、checkbox标记中。该库旨在避免XML中自定义字体的...
关于Android的DataBinding技术分享文档,是私人文档。
在DataBinding中,事件绑定是通过在XML布局文件中使用`android:onClick`属性来实现的。例如,你可以这样绑定一个点击事件: ```xml android:layout_width="wrap_content" android:layout_height="wrap_...
DataBinding2极大地简化了前端开发过程中数据绑定的工作量,使得开发者能够更加专注于业务逻辑的实现。通过灵活的配置选项,开发者可以根据实际需求定制数据展示的形式和效果,从而提升用户体验。希望本文档能帮助...
Android DataBinding库是Google推出的一种数据绑定框架,它旨在简化Android应用中的UI绑定,特别是对于MVVM(Model-View-ViewModel)设计模式的实现。双向绑定是DataBinding库的一个核心特性,它允许视图(View)和...
- **事件绑定**:可以直接在XML中绑定点击事件,如`android:onClick="@{()-> viewModel.onItemClick()}"`。 - **Observable数据**:结合`LiveData`或`ObservableField`,实现数据实时更新。 - **双向数据绑定**:...
C#中的数据绑定(DataBinding)是.NET框架提供的一种强大机制,它允许用户界面(UI)元素与数据源之间建立动态连接,使UI能够自动反映出数据源的变化。数据绑定简化了应用程序开发,尤其是在构建用户界面时,使得...
3. **MVVM模式**: 结合Android Architecture Components中的ViewModel,DataBinding是实现MVVM架构的重要工具。 4. **测试友好**: 使用DataBinding的代码更容易进行单元测试和UI测试。 **四、注意事项** 1. **...
在 Android DataBinding 中,双向绑定可以通过在布局文件中使用 `@={}` 语法来实现。例如,在一个简单的用户名绑定示例中,我们可以使用以下代码: ```xml ``` 在上面的代码中,我们使用 `@={}` 语法...
数据绑定(DataBinding)是Android开发中的一种技术,它能够帮助开发者更简洁、直观地处理UI与数据模型之间的交互。在RecyclerView中应用DataBinding,可以极大地提高代码的可读性和可维护性,减少样板代码,并使得...
此外,还可以利用-livedata-结合DataBinding实现数据的双向绑定,自动更新UI,这是MVVM架构中非常重要的一个特性。 总结一下,DataBinding是Android开发中的一个重要工具,它简化了UI和数据间的交互,让代码更加...