一.数据:
User:
class User { var firstname: ObservableField<String> = ObservableField() var lastname: ObservableField<String> = ObservableField() var isAdult: ObservableBoolean = ObservableBoolean() var displayName: ObservableField<String> = ObservableField() var age: ObservableField<Int> = ObservableField() }
二.item view:
recycler_view_item.xml:
<layout> <data> <variable name="user" type="com.m.databindingdemo.model.User"/> </data> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="60dp" android:layout_marginBottom="10dp" android:background="@android:color/darker_gray" android:gravity="center_vertical" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.firstname}"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{String.valueOf(user.age)}"/> </LinearLayout> </layout>
三.Adapter:
class RecyclerViewAdapter(private var userList: MutableList<User>) : RecyclerView.Adapter<RecyclerViewAdapter.TestViewHolder>() { override fun getItemCount(): Int = userList.size override fun onBindViewHolder(holder: TestViewHolder?, position: Int) { holder?.bind(userList[position]) } override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): TestViewHolder { val binding = DataBindingUtil.inflate<RecyclerViewItemBinding>( LayoutInflater.from(parent?.context), R.layout.recycler_view_item, parent, false ) return TestViewHolder(binding) } class TestViewHolder(private val binding: RecyclerViewItemBinding) : ViewHolder(binding.root) { fun bind(data: User) { //方法一: // binding.setVariable(BR.user,data) //方法二: binding.user = data binding.executePendingBindings() } } }
四.Activity:
class RecycleViewActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_recycle_view) val layoutManager = LinearLayoutManager(this) recycler_view.layoutManager = layoutManager recycler_view.adapter = RecyclerViewAdapter(initUsers()) } private fun initUsers() : MutableList<User>{ val userList = mutableListOf<User>() for (i in 1..5) { var user = User() user.firstname.set("name $i") user.age.set(i) userList.add(user) } return userList } }
参考:
1.java+RecyclerView:https://www.cnblogs.com/DoNetCoder/p/7243878.html?utm_source=tuicool&utm_medium=referral
2.kotlin+RecyclerView:https://github.com/JetBrains/kotlin-examples/blob/master/gradle/android-databinding/app/src/main/java/org/example/kotlin/databinding/OtherActivity.kt
相关推荐
总结来说,`Kotlin+ListView+RecyclerView+DataBinding`的组合在Android开发中提供了强大的功能,可以创建出高性能、易于维护的列表界面。`Kotlin`提升了代码质量,`RecyclerView`解决了性能问题,而`DataBinding`则...
在Android开发中,Databinding库和RecyclerView是两个非常重要的组件。Databinding提供了一种更简洁、可维护的方式来绑定数据到UI元素,而RecyclerView则是一个高效的数据展示控件,适用于大量的列表或网格数据。本...
在这个“DataBinding实现RecyclerView的Demo”中,我们将探讨如何利用DataBinding来优雅地处理RecyclerView的数据展示。 首先,我们需要理解DataBinding的基本概念。DataBinding库是Google推出的一种框架,它可以将...
一个基于MVVM用Kotlin+Retrofit+协程+Databinding(ViewBinding)+LiveData来封装的快速开发框架: 项目地址: 框架简介 使用技术 基于MVVM模式用了 kotlin+协程+retrofit+livedata+DataBinding 基本封装 封装了...
在“RecyclerView+Databinding学习Demo”项目中,DataBindingTestPractice可能是练习或示例代码的目录,里面可能包含了使用RecyclerView和Data Binding结合的实践案例。这个案例可能包括了自定义适配器的实现,如何...
在Android开发中,`RecyclerView`和`DataBinding`是两个重要的组件,它们极大地提升了应用的性能和用户体验。`RecyclerView`是一种高效的数据展示控件,它取代了早期的`ListView`,提供了更强大的自定义能力。而`...
协程+Retrofit+ViewModel+LiveData+DataBinding框架demo,相关博客参考https://blog.csdn.net/liuxingyuzaixian/article/details/125427338
"KotlinJetpackCoroutineMVVM"正是这样一套融合了Kotlin、Jetpack、Databinding、协程、Retrofit、Glide和MMKV的快速开发框架,它为Android开发者提供了一站式的解决方案,大大简化了应用的构建过程。 首先,Kotlin...
在Android应用开发中,Model-View-Presenter(MVP)架构模式和Data Binding库是两种常用的工具,它们有助于实现清晰的代码结构和高效的视图数据绑定。本DEMO结合了这两种技术,旨在提供一个实际应用的示例。...
这个名为"android-mvvm-databinding-kotlin"的项目就是一个很好的实例,它展示了如何在Android应用中有效利用这些技术。 首先,MVVM模式是一种分离视图和业务逻辑的设计模式。在MVVM中,Model代表数据模型,负责...
【标题】中的知识点详解: ...开发者可以通过研究这个项目学习到如何使用Kotlin、Dagger 2、Retrofit 2、Moshi、RxJava 2、Glide 4以及各种测试框架来构建一个包含Gif的RecyclerView,并实现全面的测试覆盖。
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 ... 【项目质量】: 所有源码都经过严格测试,...
DataBinding Retrofit OkHttp Glide Kotlin coroutines ARouter 架构 MVVMFrameComponent 组件化架构图分层如下: 因为组件化的核心基础库是基于 MVVMFrame,这里贴出 MVVMFrame 的架构图如下: 浅谈组件化 什么是...
LiveData-DataBinding-Kotlin As you may know Google introduced support for LiveData with Data Binding in Android Studio 3.1 Canary 6. Project Goal Learn to use LiveData Databinding Setup Android ...
本文将探讨如何在RecyclerView中应用DataBinding,并设计一个基类来简化这一过程。 首先,DataBinding是Android官方提供的一个库,用于帮助开发者更方便地管理Activity、Fragment或Adapter中的UI元素与数据之间的...
DataBinding允许我们在XML布局文件中直接绑定数据,减少了Java或Kotlin代码中的大量样板代码。通过表达式语言,我们可以实现双向数据绑定,当数据模型改变时,视图自动更新;反之亦然。这样,开发者可以更专注于业务...
一个应用JetPack的拨号电话号码的综合示例(DataBinding + LiveData + ViewModel) [目录]零,本文内容简介本文主要完成了电话拨号器的3中实现方式:原始的实现JetPack之DatBinding+LiveData+ViewModel实现JetPack+...
而且, bdapter支持DataBinding和MVVM 。样本 recyclerView内部的recyclerView 拖事件 下载 repositories { maven { url '...
项目涉及的技术要点: 1、组件化+Kotlin结合开发,如何管理第三方依赖 2、BaseActivity和BaseFragment等基类及通用布局的封装 3、MVP+Dagger 2+...13、DataBinding的使用 14、约束布局ConstraintLayout的使用
【Jetpack】DataBinding 架构组件 ② ( 字符串拼接函数 | 绑定点击事件函数 | DataBinding 布局中使用 import 标签导入 Java、Kotlin 类 ) https://hanshuliang.blog.csdn.net/article/details/129773150 一、...