java 使用RecyclerView小部件实现加载更多功能的实用程序类。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 使用RecyclerView小部件实现加载更多功能的实用程序类。相关的知识,希望对你有一定的参考价值。

/*
 * Copyright (C) 2015 Karumi.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


package com.karumi.eci.common.ui.recyclerview.loadmore;

import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

/**
 * RecyclerView.OnScrollListener extension used to notify when the user has scrolled close to
 * the bottom of the list.
 */
public class LoadMoreDetector extends RecyclerView.OnScrollListener {

  private final LinearLayoutManager layoutManager;

  private boolean enabled;
  private boolean loading;
  private Listener listener;

  public LoadMoreDetector(LinearLayoutManager layoutManager) {
    this.layoutManager = layoutManager;
    this.enabled = true;
  }

  public void setListener(Listener listener) {
    this.listener = listener;
  }

  public void setEnabled(boolean enabled) {
    this.enabled = enabled;
  }

  public void setLoading(boolean loading) {
    this.loading = loading;
  }

  @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
    int visibleItemCount = layoutManager.getChildCount();
    int totalItemCount = layoutManager.getItemCount();
    int pastVisibleItems = layoutManager.findFirstVisibleItemPosition();

    if (enabled && !loading) {
      if ((visibleItemCount + pastVisibleItems) >= totalItemCount) {
        if (listener != null) {
          listener.onLoadMore();
          loading = true;
        }
      }
    }
  }

  public interface Listener {
    void onLoadMore();
  }
}

以上是关于java 使用RecyclerView小部件实现加载更多功能的实用程序类。的主要内容,如果未能解决你的问题,请参考以下文章

我们应该使用 RecyclerView 来代替 ListView 吗? [关闭]

郁闷:制作一个表格小部件

带有片段的 RecyclerView

使用 Firebase 填充小部件

RecyclerView clipToPadding = false

Android Sticky header RecyclerView/ Section Header RecyclerView