gpt4 book ai didi

android - 滚动后如何在 RecyclerView 中保存按钮状态?

转载 作者:行者123 更新时间:2023-11-29 20:27:36 30 4
gpt4 key购买 nike

onBindViewHolder 中,我通过检查该产品的 id 是否在特定列表中来设置按钮的不同状态:

    ArrayList<String> compareProducts = CompareManager
.getProducts(context).getProducts();
if (compareProducts.contains(item.getId())) {
holder.compara.setText(context.getString(R.string.icon_checked));
}

但是在滚动时,选中的按钮会出现在不同的位置,从而变得困惑。据我了解,在重用 View 时,RecyclerView 使用了错误的 View 。但是,如果我通过该产品的 ID 进行检查,为什么会发生这种情况呢?


更新

@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
// setting up other data from the view
// then change button if product was added in compare before (as mentioned before)
// then set button click listener
holder.compara.setOnClickListener(new View.OnClickListener() {
// change the button state
// and save the ID to CompareManager which saves data to SharedPreferences

//then set holder tag
holder.itemView.setTag(item);

最佳答案

在检查 item.getId() 之前将 View 重置为默认状态,这样如果在之前的回收 View 中检查过它,它就不会重新使用它并重置为默认状态。

关于android - 滚动后如何在 RecyclerView 中保存按钮状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32349035/

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