android-java

frebpwbc  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(227)

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()

gstyhher

gstyhher1#

我可以通过在自定义适配器的arraylist中添加一个setter来解决这个问题,然后通过setter更改列表,然后调用notify data set change。

相关问题