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 类的视图绑定的主要内容,如果未能解决你的问题,请参考以下文章

View Binding 混淆问题。我两天都在研究混淆。

2.2.3.Architecture components_View Binding

为啥使用 View Binding 会改变布局?

为啥使用 View Binding 会改变布局?

View Binding 解决kotlin直接用VIew的id导致的IllegalStateException

SwiftUI如何在View在初始化程序中需要@Binding时实例化PreviewProvider