【发布时间】:2021-03-03 20:32:40
【问题描述】:
我有一个使用视图的函数,该视图可以处理两种不同的布局,因为这两种布局具有相同的资源名称。我正在更新代码以使用数据绑定,但我想继续使用能够处理两种布局的通用函数,而不是将其拆分为两个不同绑定的两个函数。我最初认为我可以像这样使用 DataBindingUtil 这样做:
fun LoadChatMessage(context: Context, itemView: View, itemID: Int, item: Chat) {
val itemBinding = DataBindingUtil.inflate(LayoutInflater.from(context), itemID, itemView as ViewGroup, false)
}
在这种情况下,itemID 是两个布局的 layoutId,R.layout.chat_1 或 R.layout.chat_2(示例名称)。但是,我不能使用它,因为它被认为没有足够的信息来膨胀 DataBindingUtil。我尝试对 layoutIds 进行硬编码,但这不是问题。修复错误消息的唯一方法是将 itemBinding 声明为 ItemChat1Binding 或 ItemChat2Binding,但这正是我试图避免的问题,因为在调用函数之前我不知道要使用哪个数据绑定。
有什么方法可以保持这种通用格式,以便我可以将相应的布局插入到函数中,因为布局使用相同的资源名称?
【问题讨论】:
标签: android kotlin android-databinding