首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RecyclerView.Adapter。重写的方法onCreateViewHolder参数总是在viewType参数中获得零

RecyclerView.Adapter。重写的方法onCreateViewHolder参数总是在viewType参数中获得零
EN

Stack Overflow用户
提问于 2021-08-31 10:31:54
回答 1查看 329关注 0票数 0

我想要使RecyclerView具有多个视图类型。如本主题所示:link

我理解这种方法的本质是方法getItemViewType(位置: Int):Int{}

这个viewType告诉onCreateViewHolder(父级: ViewGroup,viewType: Int)要创建哪一个。在一个测试项目中,一切都很好。

但是在这个特定的RecyclerView适配器中,方法onCreateViewHolder总是得到零。即使我把viewType设置为这样的硬方式。

代码语言:javascript
运行
复制
fun getItemViewType(position: Int): Int { return 100 }

任何线索我都会高兴的。这是我的密码:

代码语言:javascript
运行
复制
    class OrdersAdapter(val iAbsListFragment: IAbsListFragment,
                    val listItemsLD: LiveData<Result<List<Order>>>
) : RecyclerView.Adapter<OrderViewHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): OrderViewHolder {
        viewType
        return OrderViewHolder(
            LayoutInflater.from(parent.context)
                .inflate(R.layout.card_order, parent, false), iAbsListFragment
        )
    }

    override fun getItemViewType(position: Int): Int { return 100 }

    override fun getItemCount(): Int {
        return if (listItemsLD.value is Result.Success) {
            (listItemsLD.value as Result.Success<List<Order>>).data.size
        } else {
            0
        }
    }

    override fun onBindViewHolder(holder: OrderViewHolder, position: Int) {
        if (listItemsLD.value is Result.Success) {
            val order = (listItemsLD.value as Result.Success<List<Order>>).data[position]
            holder.bindTo(order)
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-01 05:28:39

别问我为什么。onCreateViewHolder必须返回RecyclerView.ViewHolder,但不能返回RecyclerView.ViewHolder实现,然后viewType参数将从getItemViewType(RecyclerView.ViewHolder: Int)获得viewType。

代码语言:javascript
运行
复制
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): OrderViewHolder //wrong, viewType always zero

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): OrderViewHolder //work well, viewType from "override fun getItemViewType"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68997095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档