java - SwipeRefresh 布局进度条即使完成后也不会隐藏

标签 java android

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

下面是我的代码:

MainActivity.java

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

            userRepository.getUserList();

        }
    });

UserRepository.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中,我正在另一个 Activity MainActivity中调用方法。我没有得到任何方法如何停止刷新过程。请有人让我知道一种停止刷新过程的方法。 任何帮助将不胜感激。

谢谢

最佳答案

要禁用进度对话框,请添加此内容,

swipeLayout.setRefreshing(false);

关于java - SwipeRefresh 布局进度条即使完成后也不会隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57271255/

相关文章:

java - 如何使用具有特定id的Spring Data Neo4j存储库保存方法?

java - 通过按 JButton 运行外部 jar 文件

java - 计算字符串数组中每个单词最后一次出现后的单词数

android - 无法在 Android 设备的/data/user/0 的子目录中捕获文件

android - 设置我的可绘制目录以支持新的 Dell Streak 而不会失去对旧设备的支持的正确方法是什么?

java - 使用 Akka http 处理 HttpResponse 404 上的重试逻辑

java - 根据空格分割字符串

java - 四舍五入到小数点后两位

java - 如何在android上的textview上显示mac地址?

android - Android 中的 Kotlin 协程 : Why use bg() from Anko instead of async()?