一.数据:
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
相关推荐
这个demo实现了数据和视图的完全分离,并且支持修改item和增加item,我在其中用了一些设计思想,有兴趣的同学可以下载看看。
DataBinding实现RecyclerView的Demo
一个基于MVVM用Kotlin+Retrofit+协程+Databinding(ViewBinding)+LiveData来封装的快速开发框架: 项目地址: 框架简介 使用技术 基于MVVM模式用了 kotlin+协程+retrofit+livedata+DataBinding 基本封装 封装了...
KotlinJetpackCoroutineMVVM:Kotlin + Jetpack + Databinding +协程+ Retrofit + Glide + MMKV封装的MVVM快速开发框架
协程+Retrofit+ViewModel+LiveData+DataBinding框架demo,相关博客参考https://blog.csdn.net/liuxingyuzaixian/article/details/125427338
android-gif-example:使用Dagger 2 + Retrofit 2 + Moshi + RxJava 2 + Glide 4的MVP中的Gif RecyclerView以及用Kotlin + Kotlin DSL编写的JUnit和Espresso测试!
MVP+DateBinding实例
android-mvvm-databinding-kotlin 一个使用MVVM +数据绑定+改造+ RxJava的简单Android应用程序项目,用Kotlin编写。
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 ...
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 ... 【项目质量】: 所有源码都经过严格测试,...
一个应用JetPack的拨号电话号码的综合示例(DataBinding + LiveData + ViewModel) [目录]零,本文内容简介本文主要完成了电话拨号器的3中实现方式:原始的实现JetPack之DatBinding+LiveData+ViewModel实现JetPack+...
而且, bdapter支持DataBinding和MVVM 。样本 recyclerView内部的recyclerView 拖事件 下载 repositories { maven { url '...
【Jetpack】DataBinding 架构组件 ② ( 字符串拼接函数 | 绑定点击事件函数 | DataBinding 布局中使用 import 标签导入 Java、Kotlin 类 ) https://hanshuliang.blog.csdn.net/article/details/129773150 一、...
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 ... 【项目质量】: 所有源码都经过严格测试,...
Jetpack_GitHub 基于Kotlin + Jetpack全家桶+ Coroutines(协程)+ Flutter等架构实现的一个精简版Github客户端项目。新开源项目: 开源不易,如果喜欢的话希望给个Star or Fork ^ _ ^,谢谢项目截图下载体验点击...
Kotlin_LiveData_DataBinding_Retrofit_MVVM:Kotlin_LiveData_DataBinding_Retrofit_MVVM
该 Android 项目组件化示例代码 100% Kotlin 实现,使用 ARouter 方案实现组件化, 整个项目基于 Android JetPack 组件库 + Kotlin 等最新技术栈进行开发, 使用 MVVM 架构 ( DataBinding + ViewModel + Lifecycle )
KotlinDataBinding 使用Kotlin和DataBinding的Hello World应用程序
本问主要介绍DataBinding在Android App中的使用方法。数据绑定是将“提供器”的数据源与“消费者”绑定并使其同步的一种通用技术。 1. Android应用程序使用数据绑定 1.1 介绍DataBinding Android通过DataBinding...