diff --git a/sample/src/main/java/com/drake/brv/sample/model/SimpleBindingModel.kt b/sample/src/main/java/com/drake/brv/sample/model/SimpleBindingModel.kt index 4d00033a..e78aa799 100644 --- a/sample/src/main/java/com/drake/brv/sample/model/SimpleBindingModel.kt +++ b/sample/src/main/java/com/drake/brv/sample/model/SimpleBindingModel.kt @@ -2,30 +2,12 @@ package com.drake.brv.sample.model import com.drake.brv.BindingAdapter import com.drake.brv.item.ItemBind -import com.drake.brv.sample.R -import com.drake.brv.sample.databinding.ItemSimpleBinding -class SimpleBindingModel : ItemBind { +class SimpleBindingModel() : ItemBind { + // 多类型列表请注意区分类型 https://liangjingkanji.github.io/BRV/multi-type.html#_5 override fun onBind(holder: BindingAdapter.BindingViewHolder) { - // 不推荐这种方式, 因为Model只应该存在数据和逻辑, 如果包含UI绑定会导致视图耦合不例如项目迭代 (例如BRVAH) - // val appName = holder.context.getString(R.string.app_name) - - // 使用不同的方法来获取视图控件 - // holder.findView(R.id.tv_simple).text = appName // 使用findById - // val dataBinding = holder.getBinding() // 使用DataBinding或ViewBinding - - // 获取数据对象 - // 如果存在多种数据类型, 请使用holder.getModelOrNull()或者if来判断itemViewType类型, 避免取值类型转换错误 - // val data = holder.getModel() - - when (holder.itemViewType) { - R.layout.item_simple_text -> { - val binding = holder.getBinding() - val data = holder.getModel() - binding.tv.text = data.name - } - } - + // val binding = holder.getBinding() + // binding.tvSimple.text = holder.layoutPosition.toString() } } \ No newline at end of file diff --git a/sample/src/main/java/com/drake/brv/sample/ui/fragment/ViewBindingFragment.kt b/sample/src/main/java/com/drake/brv/sample/ui/fragment/ViewBindingFragment.kt index 8ae50569..bebcc8d3 100644 --- a/sample/src/main/java/com/drake/brv/sample/ui/fragment/ViewBindingFragment.kt +++ b/sample/src/main/java/com/drake/brv/sample/ui/fragment/ViewBindingFragment.kt @@ -3,11 +3,9 @@ package com.drake.brv.sample.ui.fragment import android.os.Bundle import android.view.View import androidx.fragment.app.Fragment -import androidx.viewbinding.ViewBinding import com.drake.brv.sample.R import com.drake.brv.sample.databinding.FragmentViewBindingBinding -import com.drake.brv.sample.databinding.ItemCommentBinding -import com.drake.brv.sample.databinding.ItemSimpleTextBinding +import com.drake.brv.sample.databinding.ItemViewBindingBinding import com.drake.brv.sample.model.SimpleBindingModel import com.drake.brv.utils.linear import com.drake.brv.utils.setup @@ -22,22 +20,10 @@ class ViewBindingFragment : Fragment(R.layout.fragment_view_binding) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { binding.rv.linear().setup { - addType(R.layout.item_simple_text) + addType(R.layout.item_view_binding) onBind { - - // 单一类型不用判断 - val binding = getBinding() // 使用ViewBinding/DataBinding都可以使用本方法 + val binding = getBinding() binding.tvSimple.text = layoutPosition.toString() - - // 如果是多类型可以通过判断ViewBinding类型分开处理 - when (val viewBinding = getBinding()) { - is ItemSimpleTextBinding -> { - viewBinding.tvSimple.text = layoutPosition.toString() - } - is ItemCommentBinding -> { - viewBinding.tvContent.text = layoutPosition.toString() - } - } } R.id.tv_simple.onClick { toast("点击文本") diff --git a/sample/src/main/res/layout/item_view_binding.xml b/sample/src/main/res/layout/item_view_binding.xml new file mode 100644 index 00000000..5bc7f784 --- /dev/null +++ b/sample/src/main/res/layout/item_view_binding.xml @@ -0,0 +1,44 @@ + + + + + + + + +