解决RecyclerView从网络获取到数据后使用adapter.notifyDataSetChanged()无效的问题

我使用的是Retrofit框架,由于我使用了Retrofit的异步用法,故在从网络获取到数据之后需要调用adapter.notifyDataSetChanged()方法更新recyclerView的数据,但是这里很容易掉坑:recyclerView中的数据集productList是不一样的(至于为什么不一样,我也不知道……),如图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

知道了问题症结,就可以对症下药了,在适配器中新建一个刷新数据的方法

    public void updateData(List<Product> list) {// 更新数据方法
        productList.clear();
        productList.addAll(list);
        getProductRcvItemList();
        notifyDataSetChanged();
    }
// 从网络中获取商品的信息
    public void getProductsInfoFromNet(String keyword, Integer categroryId, int pageNum, int PageSize, String orderBy) {

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(RequestInterface.baseProductPath)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        RequestInterface.getProductsList2 requestGetProductsList = retrofit.create(RequestInterface.getProductsList2.class);
        Call<ServerResponse<MyPageInfo<Product>>> call = requestGetProductsList.getProducts(keyword, categroryId, pageNum, PageSize, orderBy);

        call.enqueue(new Callback<ServerResponse<MyPageInfo<Product>>>() {
            @Override
            public void onResponse(Call<ServerResponse<MyPageInfo<Product>>> call, Response<ServerResponse<MyPageInfo<Product>>> response) {
                if (response.body() == null) {
                    new MainActivity().toastShort("网络异常,请检查网络配置");
                    return;
                } else {
                    MyPageInfo<Product> myPageInfo = response.body().getData();// 获取页面信息
                    List<Product> productList = myPageInfo.getList();// 获取页面信息中的商品信息
                    
                    **adapter.updateData(productList);// 更新数据**
                }
            }

            @Override
            public void onFailure(Call<ServerResponse<MyPageInfo<Product>>> call, Throwable t) {
                new MainActivity().log("onFailure");
            }
        });
    }

将list先clear掉,然后重新添加,ok,大功告成!

希望可以帮助到入坑的童鞋

发布了19 篇原创文章 · 获赞 5 · 访问量 4203

猜你喜欢

转载自blog.csdn.net/qq_41409120/article/details/85345187