【问题标题】:Show Progress Bar when Endless scroll is loading more data无限滚动加载更多数据时显示进度条
【发布时间】:2017-06-22 14:14:23
【问题描述】:

好的,我已经使用 famous android endless scroll library 在我的应用程序中实现了 Endless Scroll。我想在应用程序到达底部并加载更多数据时显示进度条,然后在我们获取数据时将其隐藏。我正在使用 Volley 来获取数据。

这是我的 onScroll 监听器

scrollListener = new EndlessRecyclerViewScrollListener(manager) {
        @Override
        public void onLoadMore(int page, int totalItemsCount, RecyclerView view) {

            loadMore(page);
            ++page;
        }
    };

这是我的 loadMore 函数

public void loadMore(int page) {

    String url = url + page;
    StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            ArrayList<Deal> deals = new JsonConverter<Deal>().toArrayList(response, Deal.class);
            adapter.addAll(deals);



        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d(TAG, error.toString());
            Toast.makeText(getApplicationContext(), "Bad Network Connection. Please Try Again", Toast.LENGTH_LONG).show();
            stopAnim();

        }
    }
    );

    int socketTimeout = 30000; // 30 seconds. You can change it
    RetryPolicy policy = new DefaultRetryPolicy(socketTimeout,
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);

    stringRequest.setRetryPolicy(policy);
    MySingleton.getInstance(getApplicationContext()).addToRequestQueue(stringRequest);
    mSwipeRefresh.setRefreshing(false);


}

所以现在我要做的是在加载更多数据时显示进度条,并在加载完成时隐藏它。

我试过这个https://github.com/pwittchen/InfiniteScroll/blob/master/app/src/main/java/com/github/pwittchen/infinitescroll/app/MainActivity.java 但没有用。

我也试过这个https://gist.github.com/nesquena/a988aac278cff59a9a69 但没听懂。

【问题讨论】:

标签: android android-layout android-recyclerview android-volley


【解决方案1】:

目前无法为您提供确切的源代码,但您应该这样做:

  • 在 RecyclerView 下方以 XML 格式添加一个圆形 ProgressBar。
  • 将可见性设置为 GONE
  • 每次加载内容时,将可见性设置为 VISIBLE,直到加载完成。

希望你能实现其余的。

【讨论】:

    【解决方案2】:

    如果您正在寻找进度对话框的代码:

    ProgressDialog progressDialog;
    progressDialog = new ProgressDialog(TripletLogin.this);
                progressDialog.setTitle("Write Title here");
                progressDialog.setMessage("Loading...");
    
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                progressDialog.setCancelable(false);
                progressDialog.setCanceledOnTouchOutside(false);
                progressDialog.setIndeterminate(true);
                progressDialog.show();
    

    【讨论】:

    • 可以对其进行很多自定义。如果有帮助,请告诉我。
    • 我知道如何创建进度对话框。但是当我到达页面底部并且正在加载更多项目时,如何在回收站视图中显示它
    • 函数体第一行loadMore(int page)函数中写progressDialog.show();即可。
    • 当你进入onResponse或进入onErrorResponse时不要忘记progressDialog.dismiss();
    【解决方案3】:

    在你的 onResponse() 或 onErrorResponse() 里面放 progressDialog.dismiss();

    【讨论】:

      猜你喜欢
      • 2016-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-09
      • 1970-01-01
      • 2015-10-02
      • 2022-11-18
      • 2011-06-19
      相关资源
      最近更新 更多