gpt4 book ai didi

android - 动态创建 RecyclerView UI - Android

转载 作者:行者123 更新时间:2023-11-29 01:22:56 26 4
gpt4 key购买 nike

我正在开发一个电子商务应用程序。我正在处理 Products Filtering 。这里的过滤器是动态的,这意味着一旦过滤器页面将显示 BRANDS 和 PRICE,那么下次它可以显示 BRANDS , PRICE , STYLES ..etc 。过滤产品可能有很多情况。

应用程序正在从 Webservice 动态接收过滤器。所以在这里我使用从 webservice 接收的数据动态创建过滤器。为此,我使用 RecyclerView 来显示动态过滤器.

这是 RecyclerView 的代码,我在其中动态创建过滤器。

onCreateViewHolder() :

  @Override
public FilterViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LinearLayout topLayout = new LinearLayout(mContext);
topLayout.setOrientation(LinearLayout.VERTICAL);

if (filterItems != null) {
for (int filterItemsCount = 0; filterItemsCount < filterItems.size(); filterItemsCount++) {

LinearLayout ll = new LinearLayout(mContext);
ll.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(10, 10, 10, 10);

AFileterItem filterItem = filterItems.get(filterItemsCount);
TextView textView = new TextView(mContext);
textView.setText(filterItem.getFiletrLabel());
ll.addView(textView);

for (int i = 0; i < filterItem.getList().size(); i++) {
VlauesItem item1 = filterItem.getList().get(i);
CheckBox cb = new CheckBox(mContext);
cb.setId(i);
cb.setText(item1.getValueItemLabel());

cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Toast.makeText(mContext, String.valueOf(isChecked), Toast.LENGTH_SHORT).show();
}
});

ll.addView(cb);
}

topLayout.addView(ll);
}
}else{
topLayout.addView(null);
}

FilterViewHolder viewHolder = new FilterViewHolder(topLayout);
return viewHolder;
}

Now , the problem is :

当我动态创建过滤器时,RecyclerView 会多次创建相同的过滤器。 我想知道我应该如何管理上面的代码才能消除这个问题。

最佳答案

您需要了解什么是 ViewHolder。具体类型的 ViewHolder 具有单一布局。如果可能,考虑创建不同的 viewholder 类型,或具有预定义布局的类型,这将在 onBind 回调中自定义。您所看到的正在发生,因为 RecyclerView 重用 View ,并且调用 onCreateViewHolder 只是为了用项目填充屏幕,然后它们被重用。

关于android - 动态创建 RecyclerView UI - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35716325/

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