一.配置
在 build.gradle 的 repositories 添加:
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
然后增加dependencies
dependencies {
compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:v1.9.7'
}
二.使用
1,单类型BaseQuickAdapter使用
//这里的泛型:是你请求网络返回的Bean对象,这里模拟,就用String
public class TreasureFragmentAdapter extends BaseQuickAdapter<String> {
//构造方法, 第一个参数是你条目的布局Id,第二个是列表的数据集合
public TreasureFragmentAdapter(int layoutResId, List<String> data) {
super(layoutResId, data);
}
@Override//参数一:原生的Holder ,参数二: 对应位置的数据
protected void convert(BaseViewHolder baseViewHolder, String s) {
//找到控件对象,进行强转,然后设置数据
((TextView) baseViewHolder.getView(R.id.tv)).setText(s);
//这里是条目里边的子控件的点击事件
baseViewHolder.setOnClickListener(R.id.tv,new OnItemChildClickListener()).setOnClickListener(R.id.tv,new OnItemChildClickListener());
}
页面代码:
找控件
this.recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
//模拟数据
for (int i = 0; i < 100; i++) {
arr.add(i + "");
}
//设置加载方式
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
//创建Adapter
adapter = new TreasureFragmentAdapter(R.layout.image, arr);
//设置Adapter
recyclerView.setAdapter(adapter);
整个条目的点击事件
//条目点击事件
adapter.setOnRecyclerViewItemClickListener(new BaseQuickAdapter.OnRecyclerViewItemClickListener() {
@Override
public void onItemClick(View view, int i) {
//adapter.getData().get(i)表示获取对应位置的数据
showToast(adapter.getData().get(i)+"条目被点击");
}
});
//条目里边控件的点击事件
adapter.setOnRecyclerViewItemChildClickListener(new BaseQuickAdapter.OnRecyclerViewItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter baseQuickAdapter, View view, int i) {
showToast(adapter.getData().get(i)+"条目里边控件被点击");
}
});
注意: 条目点击和条目里边的控件点击不会有冲突
长按事件雷同上边的点击事件
添加动画
adapter.openLoadAnimation();
**系统默认的5种动画如下:**
public static final int ALPHAIN = 1;
public static final int SCALEIN = 2;
public static final int SLIDEIN_BOTTOM = 3;
public static final int SLIDEIN_LEFT = 4;
public static final int SLIDEIN_RIGHT = 5;
添加头和脚View
adapter.addHeaderView(View.inflate(getActivity(),R.layout.image,null));
adapter.addHeaderView(View.inflate(getActivity(),R.layout.image,null));
adapter.addHeaderView(View.inflate(getActivity(),R.layout.image,null));
adapter.addHeaderView(View.inflate(getActivity(),R.layout.image,null));
adapter.addFooterView(View.inflate(getActivity(),R.layout.image,null));
adapter.addFooterView(View.inflate(getActivity(),R.layout.image,null));
adapter.addFooterView(View.inflate(getActivity(),R.layout.image,null));
**注意:支持添加多个头和脚,位置会根据你天机头的多少进行调整,你什么都不需要做
且头部的处理也是在对应的页面上进行使用**
下拉刷新和上拉加载更多
上拉刷新可以使用Spring进行动画的自定义,效果更炫
加载更多可以使用Adapter用户体验更好
加载更多代码:
//打开加载更多开关
adapter.openLoadMore(arr.size(),true);
//加载更多回调
adapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
@Override
public void onLoadMoreRequested() {
//不用post设置加载数据会报错,至于为什么会报错,还是不确定,这里边全是主线程
recyclerView.post(new Runnable() {
@Override
public void run() {
adapter.notifyDataChangedAfterLoadMore(arr2,false);
}
});
}
});
侧滑的Adapter