RecyclerViewAdapter
##简介 一个支持RecyclerView加载更多的BaseAdapter
##导入
dependencies {
compile 'com.othershe:BaseAdapter:1.1.3'
}
##用法
####1、创建Adapter (1)创建只有一种ItemView的Adaptr
public class CommonRefreshAdapter extends CommonBaseAdapter<T> {
public CommonRefreshAdapter (Context context, List<T> datas, boolean isLoadMore) {
super(context, datas, isLoadMore);
}
@Override
protected void convert(ViewHolder holder, T data) {
//init item
}
@Override
protected int getItemLayoutId() {
return item_layout;
}
}
(2)创建有多种ItemView的Adapter
public class MultiRefreshAdapter extends MultiBaseAdapter<T> {
public MultiRefreshAdapter(Context context, List<T> datas, boolean isOpenLoadMore) {
super(context, datas, isOpenLoadMore);
}
@Override
protected void convert(ViewHolder holder, T data, int viewType) {
}
@Override
protected int getItemLayoutId(int viewType) {
}
@Override
protected int getViewType(int position, T data) {
}
}
####2、初始化Adapter (1)初始化只有一种ItemView的Adaptr
CommonRefreshAdapter mAdapter = new CommonRefreshAdapter(this, data, true);
(2)初始化只有一种ItemView的Adaptr
MultiRefreshAdapter mAdapter = new MultiRefreshAdapter(this, data, true);
PS:true代表是否开启加载更多,否则不开启。
####3 3.1、初始化EmptyView
View emptyView = LayoutInflater.from(this).inflate(R.layout.empty_layout, (ViewGroup) mRecyclerView.getParent(), false);
mAdapter.setEmptyView(emptyView);
3.2、直接移除EmptyView
mAdapter.removeEmptyView();
3.3、显示首次预加载无数据或失败的view,以便重新加载或提示用户
View reloadLayout = LayoutInflater.from(this).inflate(R.layout.reload_layout, (ViewGroup) mRecyclerView.getParent(), false);
mAdapter.setReloadView(reloadLayout);
PS:3.2和3.3任选其一即可
####4、初始化加载中、加载失败、加载完成的Footer View布局
mAdapter.setLoadingView(view);
mAdapter.setLoadFailedView(view);
mAdapter.setLoadEndView(view);
####5、设置加载更多的回调
mAdapter.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore(boolean isReload) {
//do your load more;
}
});
####6、设置item的点击回调 (1)设置只有一种ItemView的Item点击回调
mAdapter.setOnItemClickListener(new OnItemClickListeners<T>() {
@Override
public void onItemClick(ViewHolder viewHolder, T data, int position) {
}
});
(2)设置有多种ItemView类型的Item点击回调
mAdapter.setOnMultiItemClickListener(new OnMultiItemClickListeners<T>() {
@Override
public void onItemClick(ViewHolder viewHolder, T data, int position, int viewType) {
}
});
####7、更新列表的相关方法
//新data插入到原data的尾部
mAdapter.setLoadMoreData(data);
//新data直接替换原data
mAdapter.setNewData(data);
//新data插入到原data头部
mAdapter.setData(data);