如何在 RecyclerView 行内添加动态视图

4

我有一个RecyclerView,每一行里面都有一个LinearLayout,根据每行的数据需要动态插入一些视图。

我已经尝试过

for(int i=0;i<4;i++){
    View view = LayoutInflater.from(context).inflate(R.layout.sales_total_item_with_img,null);
    holder.dynamicLinearLayout.addView(view);
}

the above code is written inside onBindHolder method and working but it is inflating each time I scroll and this thing is just adding more and more views

有人可以告诉我是否有做错什么并建议更好的方法吗?


在动态添加视图之前,您应该检查现有的情况,例如您必须比较每个模型对象中的数据量与动态添加的视图数量。如果您动态添加的视图数量不同或为0,则删除所有视图并从头开始为该特定对象添加视图。 - KunalK
2个回答

9
在 for 循环之前,请尝试使用 holder.dynamicLinearLayout.removeAllViews()。

0

我知道回复很晚了,但还是想分享一下Kotlin的代码。在BindViewHolder中只需像这样操作。

 holder.llDescription.removeAllViews()
    for (i in 0 until  data.description.size) {
        val childView: View = context.layoutInflater.inflate(R.layout.product_description, null)
        val tvDescription : TextView = childView.findViewById(R.id.tvDescription)
        tvDescription.text = data.description[i].title
        holder.llDescription.addView(childView)
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接