Android Studio 中的通用视图绑定

Generic View Binding in Android Studio

我正在为 ListAdapterSelectionTracker<Long> 撰写摘要 类。在我的例子中,SelectionTracker 通过

selectionKey 组织项目
interface TrackedListItem {

    var selectionKey : Long? 

}

现在,RecyclerView 中的项目(因此,存储在 ListAdapter 中的项目)需要绑定一个“viewModel”(注意这不会扩展 ViewModel ,我只是遵循 Android Sunflower) 中概述的约定。坚持相同的约定,我的 ViewHolder 应该以 ViewBinding 作为参数:

abstract class TrackedItemViewHolder(val binding: ViewBinding) : RecyclerView.ViewHolder(binding.root)

我提前知道传递给 ViewHolder 的绑定有一个我可以绑定的数据变量 viewModel,我会知道这个 viewModel 实现 TrackedListItem。我如何创建一个有效地通过的通用布局(并因此绑定):

<data><variable
            name="viewModel"
            type="...TrackedListItem" /></data>

任何感兴趣的人的合理解决方法是声明:

abstract class TrackedItemViewHolder(val binding: ViewBinding) : 
                                    RecyclerView.ViewHolder(binding.root){

    abstract val viewModel : TrackedListItem 
    ...

然后在实现中:

override val viewModel : TrackedListItem
    get() = (binding as bindingWithViewModel).viewModel!!