Skip to content

封装了RecyclerView和RecyclerView的Adapter,使其具有上拉加载更多的功能,demo中还接入了SwipeRefreshLayout,可以下拉刷新,并且不会冲突

License

Notifications You must be signed in to change notification settings

orangeju0317/LoadMoreRecyclerview

Repository files navigation

LoadMoreRecyclerview

封装了RecyclerView和RecyclerView的Adapter,使其具有上拉加载更多的功能,还接入了SwipeRefreshLayout,可以下拉刷新,并且不会冲突

效果如下:

1. MyRecyclerView的使用

MyRecyclerView是继承了系统的Recyclerview,使其具有上拉加载的功能,这里对MyRecyclerview的方法作一些说明:

setLoadMoreEnable(boolean) 是否允许上拉加载
setDelayMillis(long) 设置延迟加载的时间 单位为毫秒 默认是0ms
setOnLoadMoreListener() 使用者需要调用这个方法,实现OnLoadMoreListener,来复写加载更多时的数据操作

接口OnLoadMoreListener中的方法:

onLoadBefore() 加载之前执行的方法,可以做业务上的判断或者准备等
onLoadMore() 加载更多时的具体数据操作,可以从网络等获取数据

2. BaseAdapter的使用

BaseAdapter在封装之后只需要简单的在构造时设置数据源List、item_view的layout id,调用setBinder()设置数据的展示方式即可:

BaseAdapter<String> adapter = new BaseAdapter<>(list, this, R.layout.item_view);
adapter.setBinder(new BaseAdapter.OnBindViewHolder() {
            @Override
            public void bindView(BaseAdapter.ViewHolder holder, int position) {
                holder.setText(R.id.tv_item1, list.get(position));
            }
        });

这里holder.setText(R.id.tv_item1, list.get(position));, 对于TextView,设置item_view的控件id和String或者R.string.strid均可,还有对ImageView的简单使用,如果holder的方法不满足需求,可以自行增加

3. 具体使用示例:

MyRecyclerView rcv = (MyRecyclerView) findViewById(R.id.rcv);
rcv.setLoadMoreEnable(true); // 默认是允许
rcv.setDelayMillis(1000); // 加载更多时 设置1000毫秒延迟
rcv.setLayoutManager(new LinearLayoutManager(this));
ArrayList<String> list = new ArrayList<>();
BaseAdapter adapter = new BaseAdapter<>(list, this, R.layout.item_view);
adapter.setBinder(new BaseAdapter.OnBindViewHolder() {
    @Override
    public void bindView(BaseAdapter.ViewHolder holder, int position) {
        holder.setText(R.id.tv_item1, list.get(position));
    }
});
rcv.setAdapter(adapter);
rcv.setOnLoadMoreListener(new MyRecyclerView.OnLoadMoreListener() {
    @Override
    public boolean onLoadBefore() {
        return !refreshLayout.isRefreshing();
    }

    @Override
    public void onLoadMore() {
        setData();
    }
});

注意事项

  1. 在app/build.gradle中需添加依赖:
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.pnikosis:materialish-progress:1.7'
  1. 使用时必须复制MyRecyclerView、BaseAdapter、res/layout/view_load_more.xml,可以自行进行扩展、修改加载样式
  2. MyRecyclerView设置adapter时必须为BaseAdapter

About

封装了RecyclerView和RecyclerView的Adapter,使其具有上拉加载更多的功能,demo中还接入了SwipeRefreshLayout,可以下拉刷新,并且不会冲突

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages