序言
RecyclerView可以替换ListView和GridView.
BaseRecyclerHelper优化并简化了RecyclerView的使用.
特别说明
1.RecyclerView
强烈建议对RecyclerView有一定了解后,再使用BaseRecyclerHelper.
如果你对RecyclerView还不熟悉,请参考:
教程:
http://blog.csdn.net/lmj623565791/article/details/45059587
http://blog.csdn.net/skykingf/article/details/50827141
视频:
http://www.imooc.com/learn/424
http://www.imooc.com/learn/731
2.BaseRecyclerHelper
强烈建议对照官方demo进行学习
Github首页:
https://github.com/CymChad/BaseRecyclerViewAdapterHelper
开始使用
一.添加RecyclerView依赖
点击Structure,再点击右边绿色+号,添加recyclerview依赖
二.添加BaseRecyclerHelper依赖
网址:https://github.com/CymChad/BaseRecyclerViewAdapterHelper
步骤:
1.先在 build.gradle(Project:XXXX) 的 repositories 添加:
allprojects {
repositories {
maven { url "https://jitpack.io"}
}
}
2.然后在 build.gradle(Module:app) 的 dependencies 添加:
dependencies {
compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:VERSION_CODE'
}
用真实发行版本号, 替换VERSION_CODE
版本号网址 https://github.com/CymChad/BaseRecyclerViewAdapterHelper/releases,用最新的就好了, 我现在用的是2.8.0
注意:两个gradle都必须要写,要不然无法加载成功。
三.最好添加这么一行代码,避免和xUtils冲突的bug(只是可能有冲突)
defaultConfig {
useLibrary 'org.apache.http.legacy'
}
现在可以正式开始使用了!
三.使用方法
(一)普通使用
1.Activity代码
//先声明
Videovideo;//实体类
List<Video> list;//实体类集合
RecyclerViewrecyclerView;
VideoAdapteradapter;
public void initView(){
recyclerView= (RecyclerView)view.findViewById(R.id.lv_video_tch);
adapter =new VideoAdapter(R.layout.item_video,list);//当前item布局
recyclerView.setAdapter(adapter);//用setAdapter方法设置适配器
LinearLayoutManager linearLayoutManager =newLinearLayoutManager(this) {
@Override
public booleancanScrollVertically(){//这里是防止嵌套滑动不流畅
return false;
}
};
recyclerView.setLayoutManager(linearLayoutManager);//设置recyclerview的显示方式,这里用ListView的方式显示
recyclerView.addItemDecoration(new DividerItemDecoration( getActivity(),DividerItemDecoration.HORIZONTAL));//简单分割线,可以暂时不用
}
public void getVideoList(){
//…Xtuils获取数据
for(…){
//添加到用户List中
list.add(video_tchToStu);
//quickAdapter.notifyDataSetChanged();//用这个也可以,和listview的notifydataset一模一样
adapter.notifyItemInserted(i);//用这个也可以,都是把数据添加到适配器中,这个是用for循环依次添加
}
}
2.Adapter代码
适配器的代码比listview和recyclerview原始代码减少70%以上!!非常强大!
(1)需要注意的,如何拿到每个item内部的控件
if (item.tags.equals("1")){
helper.setText(R.id.txv_tags,"天猫");
}else {
//拿到控件
helper.getView(R.id.txv_tags).setVisibility(View.GONE);
}
或者
Button bf = (Button) helper.getView(R.id.btn_video_more);
bf.setText(item.header);
(2)Adapter全部代码示例
1.适配器必须继承BaseQuickAdapter类,先写出来,然后ctrl+1自动重写convert()方法,和构造函数, BaseQuickAdapter有两个泛型类,第一个是你的实体类,第二个是BaseViewHolder.
2.构造方法用ctrl+1自动生成,第一个参数是你的Item布局,第二个参数是实体类集合数据
3.Convert()方法就是用来转化行布局内的控件的,两个参数helper和item,helper就是帮助类,item就是你的实体类集合的每一个对象
4.继承BaseQuickAdapter类,先写出来,然后ctrl+1或alt+回车自动重写convert()方法,和构造函数
5.converted()方法内通过setText()方法给item布局内的textview控件赋值!
public class videoAdapter extendsBaseQuickAdapter<Video,BaseViewHolder> {
privateBitmapUtilsbitmapUtils;
publicVideoAdapter (intlayoutResId,List<Video> data){
super(layoutResId, data);
bitmapUtils= Utils.getInstance();
}
@Override
protected void convert(BaseViewHolder helper, Videoitem) {
helper.setText(R.id.txv_username_video_comment,item.username);
helper.setText(R.id.txv_contentvideo,item.contentvideo);
bitmapUtils.display(helper.getView(R.id.imgv_avatar_video_comment),item.avatar);
}
}
}
3.按钮点击事件
非常方便,再也不用像listview一样声明很多接口了!
(1) Item的点击事件
直接在Activity里写,如果复制粘贴报红了,把@override的部分删了,再ctrl+1重新生成一下就好了!以下同理.
(方法:通过mRecyclerView.addOnItemTouchListener,传入OnItemClickListener)
mRecyclerView.addOnItemTouchListener(newOnItemClickListener( ){
@Override
public voidSimpleOnItemClick(BaseQuickAdapter adapter, View view, int position) {
//你的业务逻辑代码
}
});
(2)Item的长按事件
(方法:通过