首页 > 解决方案 > SwipeRefresh 布局进度条即使在完成后也不会隐藏

问题描述

我正在使用 MVVM 模式,其中我使用 SwipeRefresh 布局来刷新我的布局中的回收器视图。当我拉它时,即使在方法成功完成后它也会继续刷新。

下面是我的代码:

MainActivity.java

refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {

            userRepository.getUserList();

        }
    });

用户存储库.java

public void getUserList(){

          Retrofit retrofit = RetrofitClient.getInstance();
          ApiService apiService = retrofit.create(ApiService.class);

          Call<List<User>> userList = apiService.getUser();

          userList.enqueue(new Callback<List<User>>() {
              @Override
              public void onResponse(Call<List<User>> call, final Response<List<User>> response) {

                  Completable.fromAction(new Action() {
                          @Override
                          public void run() throws Exception {

                              if(response.body() != null) {

                                  List<User> list = response.body();

                                  for (int i = 0; i < list.size(); i++) {

                                      String id = list.get(i).get_id();
                                      String names = list.get(i).getName();
                                      String age = list.get(i).getAge();

                                      User user = new User(id,names,age);

                                      userDb.userDao().Insert(user);

                                  }
                              }
                          }
                      }).subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe(new CompletableObserver() {
                            @Override
                            public void onSubscribe(Disposable d) {

                            }

                            @Override
                            public void onComplete() {

                                Toast.makeText(context,"Data inserted",Toast.LENGTH_SHORT).show();
                            }

                            @Override
                            public void onError(Throwable e) {

                                Toast.makeText(context,e.getMessage(),Toast.LENGTH_LONG).show();
                            }
                        });

              }

              @Override
              public void onFailure(Call<List<User>> call, Throwable t) {
                  Toast.makeText(context,t.getMessage(),Toast.LENGTH_LONG).show();
              }
          });

}

方法获取列表在另一个类UserRepository中,我在另一个活动MainActivity中调用方法。我不知道如何停止刷新过程。有人请告诉我一种停止刷新过程的方法。任何帮助,将不胜感激。

谢谢

标签: javaandroid

解决方案


要禁用进度对话框添加这个,

swipeLayout.setRefreshing(false);

推荐阅读