View Binding 是不是支持 Adapter 类的视图绑定
Posted
技术标签:
【中文标题】View Binding 是不是支持 Adapter 类的视图绑定【英文标题】:Does View Binding support view binding for Adapter classesView Binding 是否支持 Adapter 类的视图绑定 【发布时间】:2020-02-26 11:06:13 【问题描述】:我刚刚将 android Studio 更新到 3.6 并在我的项目中启用了视图绑定,我可以在我的片段中使用视图绑定。
我有 ListItemAdapter 类,它是 BaseExpandableListAdapter 的子类,我也想为这个类使用视图绑定。适配器类似乎不支持它?
正如我上面提到的。我正在使用 ExpandableListView。下面是在 expandableListView 适配器类中膨胀 GroupView 和 ChildView 的代码。
现在我正在使用 KotlinX.android.synthetic
override fun getGroupView(
groupPosition: Int,
isExpanded: Boolean,
convertView: View?,
parent: ViewGroup?
): View
var convertView: View? = convertView
?: return context.layoutInflater.inflate(R.layout.list_item_parent_sidemenu, null)
convertView!!.imgGroupIndicatorIcon.isSelected = isExpanded
var headerTitle = getGroup(groupPosition) as String
convertView!!.txtSideMenuParent.text = headerTitle
return convertView!!
override fun getChildView(
groupPosition: Int,
childPosition: Int,
isLastChild: Boolean,
convertView: View?,
parent: ViewGroup?
): View
var convertView: View? = convertView
?: return context.layoutInflater.inflate(R.layout.list_item_child_sidemenu, null)
var childText = getChild(groupPosition, childPosition) as String
convertView!!.txtSideMenuChild.text = childText
return convertView!!
【问题讨论】:
我想你可以在这个question找到你的答案 请提供minimal reproducible example 显示您尝试过的内容并详细解释“适配器类不支持它”的意思。生成的视图绑定类上的inflate()
方法应该可以在LayoutInflater
上的inflate()
的任何地方工作。
即兴发挥,您应该能够在这两个函数中使用视图绑定,以替换您现有的 inflate()
调用。
【参考方案1】:
enter code here
val view = BistItemParentSidemenuBinding .inflate(LayoutInflater.from(parent.context), 父级,假).root
以上应该可以代替
var convertView:查看? = 转换视图 ?: return context.layoutInflater.inflate(R.layout.list_item_child_sidemenu, null)
【讨论】:
以上是关于View Binding 是不是支持 Adapter 类的视图绑定的主要内容,如果未能解决你的问题,请参考以下文章
2.2.3.Architecture components_View Binding