取消adapter.notifyDataSetChanged

时间:2018-05-07 08:44:57

标签: java android android-recyclerview retrofit

我对Android有点新手,我想知道如果我运行notifyDataSetChanged()后可以取消它,我可以在中间取消它。

例如我的案例:

如果onResponse获得1作为响应,我会getPrice()然后是getTransaction。

我会使用当前代码设置swipeRefreshListener:

swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
                            @Override
                            public void onRefresh() {
                                getTransactions(view);

                                Animation fadeIn = new AlphaAnimation(0, 1);
                                fadeIn.setInterpolator(new AccelerateInterpolator()); //and this
                                fadeIn.setDuration(1000);

                                swipeRefreshLayout.setRefreshing(true);

                                layoutBalance.setAnimation(fadeIn);
                                mActivities_RecyclerView.setAnimation(fadeIn);
                                swipeRefreshLayout.setRefreshing(false);

mActivities_RecyclerViewAdapter.notifyDataSetChanged();
                            }

                        });

我会记得getTransaction,因为我需要从API获取最新的数据。 但是因为我使用retrofit enqueue的API调用将运行异步,所以在从服务器获取实际数据之前,我的数据会先刷新。

所以,我的问题是,我可以取消notifyDataSetChanged()还是需要更改我的实施?

1 个答案:

答案 0 :(得分:0)

假设您有一个名为"APIData"的Datamodel,现在您已经将它分配给适配器和recyclerview,在Swipereferesh发生后您已收到刷新的数据,这将再次出现在数据模型中被称为"APIData",现在假设这是APIData2,现在只需使用

APIData.equals(APIData2)

这将检查先前的数据是否与新数据相同,如果真的你不需要notifyDataSetChanged()