recyclerview用于显示产品的自定义arraylist,用户可以通过调用swapadapter的单选按钮在不同类型的产品之间切换此视图。所有的产品都是通过选择微调棒按直径过滤的,因为用户希望得到匹配直径的产品,所以在适配器交换时过滤器必须保持不变。所有这些都在视图中工作,但是当用户选择要添加到购物车的项目时,购物车将显示错误的项目。它将从相同的位置,但是,从以前的适配器。当这些适配器切换时,最后一个适配器也会切换。为什么视图会刷新,但链接到位置的数据总是落后一步?
这是回收视图
mRecyclerView = findViewById(R.id.inventory_recycler_view);
mLayoutManager = new LinearLayoutManager(this);
aAdapter = new CustomAdapter(aList);
bAdapter = new CustomAdapter(bList);
cAdapter = new CustomAdapter(cList);
dAdapter = new CustomAdapter(dList);
eAdapter = new CustomAdapter(eList);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(aAdapter);
这是广播组
bButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mRecyclerView.swapAdapter(bAdapter, true);
bAdapter.getFilter().filter(filterDiameterString);
// bAdapter.notifyDataSetChanged();
}
});
cButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mRecyclerView.swapAdapter(cAdapter, true);
cAdapter.getFilter().filter(filterDiameterString);
// cAdapter.notifyDataSetChanged();
}
});
dButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mRecyclerView.swapAdapter(dAdapter, true);
dAdapter.getFilter().filter(filterDiameterString);
// dAdapter.notifyDataSetChanged();
}
});
eButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mRecyclerView.swapAdapter(miscAdapter, true);
eAdapter.getFilter().filter(filterDiameterString);
// eAdapter.notifyDataSetChanged();
}
});
尝试了以下操作:notifydatasetchange recyclerview.invalidate adapter.clear()
1条答案
按热度按时间gstyhher1#
我可以通过在自定义适配器的arraylist中添加一个setter来解决这个问题,然后通过setter更改列表,然后调用notify data set change。