gpt4 book ai didi

android - 具有多种项目类型的 DataBoundListAdapter

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:11:00 25 4
gpt4 key购买 nike

我正在使用来自 android 架构组件的 DataBoundListAdapter example .

我需要增强它以支持多种项目类型。有人做过吗?我的问题是如何在 createBinding 过程中找出项目类型,因为我在那里没有可用的项目位置,但我需要它来获取项目类型以便能够基于它膨胀正确的布局。

@Override
protected ChatMessageItemBinding createBinding(ViewGroup parent) {
MyItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.my_item, parent,
false, dataBindingComponent);


return binding;
}

最佳答案

查看 DataBoundListAdapter 的来源我可以看到创建绑定(bind)只是来自 onCreateViewHolder 的调用,其中包含您需要的信息 - viewType: Int

最简单的选择是覆盖方法在您自己的适配器中执行的操作,以传递您需要的类型信息。

@Override
DataBoundViewHolder<V> onCreateViewHolder(ViewGroup parent, int viewType) {
//Note: no call to super
V binding = createBindingByType(parent, viewType) //this is a new method
return DataBoundViewHolder(binding)
}

private ChatMessageItemBinding createBindingByType(ViewGroup parent, int viewType) {
@LayoutRes int layout;
switch(viewType) {
case ...:
layout = R.layout.my_item;
break;
...
}
return DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), layout, parent, false, dataBindingComponent);
}

@Override
protected ChatMessageItemBinding createBinding(ViewGroup parent) {
throw new RuntimeException("This method should not be called with MyAdapter");
}

关于android - 具有多种项目类型的 DataBoundListAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51365460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com