recyclerview的基本流程

recyclaerview的基本操作流程:
 Android 默认提供的 RecyclerView 就能支持 线性布局、网格布局、瀑布流布局 三种,而且同时还能够控制横向还是纵向滚动。
而 LayoutManager 只是一个抽象类而已,系统已经为我们提供了三个相关的实现类 LinearLayoutManager(线性布局效果)、GridLayoutManager(网格布局效果)、StaggeredGridLayoutManager(瀑布流布局效果)。
RecyclerView 基础使用关键点同样有两点:
  继承重写 RecyclerView.Adapter 和 RecyclerView.ViewHolder

首先我们用recyclerview需要导入一个依赖
compile 'com.android.support:recyclerview-v7:25.3.1'这个依赖版本必须和我们项目的版本一样。
倒好依赖以后我们就可一在想用布局的xml里面直接书写控件就可以了;
recyclerview和listview主要是适配器的编写格式不同
写recyclerview的适配器 / /recyclerview的适配,注意要指定泛型《泛型里面一般是类名.viewholder继承viewholder(内部实现复用的优化机制)》
在创建的适配器类继承recyclerview特有的adapter但必须定义泛型,泛型的参数是基本生是类名加定义的优化(viewholder)的名;
在自动生成内部优化类、再自动重写三个方法、在定义上下文和数据集合;
重写的三个方法分别作用是:
方法一:
//创建viewholder也就创建出一个item,并把viewholder的item返回出去
@Override
public ViewHolde onCreateViewHolder(ViewGroup parent, int viewType) {
//转换一个view布局对象,决定了item的样子,参数:1:上下文 2:资源文件:3:如果没有就返回空
View itemView = View. inflate ( mContext , R.layout. recycler_list , null );
//实例化viewholder
ViewHolde viewHolde = new ViewHolde(itemView);
//把viewholder传出去
return viewHolde;
}
方法二:
//当viewholder和数据绑定的时候回调
@Override
public void onBindViewHolder(ViewHolde holder, int position) {
//从集合里取出item对应的数据
MyBean myBean = datalist .get(position);
//给viewholder里的控件对象设置对象
holder.setdata(myBean);
}
方法三:
//得到集合的长度
@Override
public int getItemCount() {
//数据不为空
if ( datalist != null && datalist .size()> 0 ) {
return datalist .size();
}
return 0 ;
}
下面是优化里面的代码:
public class ViewHolde extends RecyclerView.ViewHolder {

private final ImageView img ;
private final TextView lv_tv ;

public ViewHolde(View itemView) {
super (itemView);
//得到控件的id并提取成员变量
img = (ImageView) itemView.findViewById(R.id. lv_img );
lv_tv = (TextView) itemView.findViewById(R.id. lv_tv );
}

public void setdata(MyBean data) {
//给控件赋值
img .setImageResource(data. tupian );
lv_tv .setText(data. name );

}
}
///
然后我们在主activity里面实例化适配器就可以了
实例化之后用recyclerview显示适配器上的内容;区别主要的我们要显示listview可以正向、反向、垂直、和横向(他也有正反两项)
主要还是获取: //初始化布局管理器,并传入上下文
LinearLayoutManager linearLayoutManager = new LinearLayoutManager( this );
//通过布局管理器,可以控制条目排序的顺序, true:反向 false 正常(默认)
linearLayoutManager.setReverseLayout(dian);
//设置recyclerview显示的水平还是垂直(LinearLayoutManager.VERTICAL是垂直默认)(定义一个三元运算符来实现)
linearLayoutManager.setOrientation(sp ? LinearLayoutManager. VERTICAL :LinearLayoutManager. HORIZONTAL );
//给recyclerview添加一个布局管理器
recycler_view .setLayoutManager(linearLayoutManager);


/
gridview适配器也是大同小异在适配器里改下布局文件这边一样配置
就是获取的布局管理器不一样:
//实例化gridlayout的布局管理器并传入上下文和显示的列数
GridLayoutManager gridLayoutManager = new GridLayoutManager( this , 3 );
//给他传入一个布尔值来判断他是反向还是正向
gridLayoutManager.setReverseLayout(dian);
//设置他是否是垂直和水平的方向也是通过一个布尔值来实现
gridLayoutManager.setOrientation(sp? gridLayoutManager. VERTICAL :gridLayoutManager. HORIZONTAL );
//最后把gridviewlayout的容器添加给recyclerview里面便于显示
recycler_view .setLayoutManager(gridLayoutManager);


///
瀑布流适配器和gridview的适配器一样只是改了一下布局控件的属性
就是获取的布局管理器不一样:
//实例化适配器
Mypubuadapter mypubuadapter = new Mypubuadapter( this , list);
//给ecyclerview添加数据
recycler_view .setAdapter(mypubuadapter);
//得到recyclerview瀑布流的布局管理器(里面需要两个参数:参数一是要分为几列:参数二是指定item的排列方向)
StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager( 2 , sp ? StaggeredGridLayoutManager. VERTICAL : StaggeredGridLayoutManager. HORIZONTAL );
//通过布局管理器可以控制条目排列的顺序 true是反向 false是正常
staggeredGridLayoutManager.setReverseLayout(dian);
//把资源管理器给recyclerview显示
recycler_view .setLayoutManager(staggeredGridLayoutManager);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值