RecyclerView的介绍和布局

作者:刘旭濠

在开发软件学习过程中,在网上查找资料结果发现一个新知识(虽然嘛还没有研究透),不过还是要跟大家分享一下,就是这RecyclerView这个适配器类型控件,这是一个手机安卓5.0后推出的一个强大的适配器类型控件,它与其他不同的是它还需要一个LayoutManager,RecyclerView它共提供了3种布局管理器:LinearLayoutManager线性布局管理器,支持水平和垂直效GridLayoutManager网格布局管理器,支持水平和垂直效果,StaggeredGridLayoutManager分布型管理器,瀑布流效果
对于RecyclerView的使用就是,先引入一个RecyclerView依赖包。(至于这么引用就自己百度吧)接着在xml布局中声明,
接着在设置布局管理器
怎么设置布局管理器管理器呢就像下面的例子一样
mRcv.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
  然后接着创建适配器,设置数据源和绑定适配器,至于具体创建适配器如下:
先创建一个类,然后继承RecyclerView.Adapter这个.接着创建一个类ViewHolder,继承RecyclerView。VIewHolder,该类需要创建匹配父类的构造。在重写适配器中的方法:getItemCount():获取数据源的个数(item的数量);onCreateViewHolder():该方法中导入布局,实例化VIewHolder;onBindViewHolder():绑定VIewHolder,加载数据。
注意一下:RecyclerView的LinearLayoutManager不同于一般适配器的布局,RecyclerView的item最外层的布局参数是有效的,比如高度宽度等,所以在使用的时候,第一种是导入View的时候指定没有parent(这里不推荐使用),第二种是在item布局的最外层指定具体的参数。
RecyclerView 为开发者提供了强大的复用能力,比如下面这个(别喷临时弄的样式做出来的样子大概是这种的)
在这里插入图片描述
至于怎么做呢,已经有答案了就是下面的(当然还是百度的大神学习过来的,我还没有研究透)
第一步:创建布局,需要导入依赖包:android.support.v7.widget.RecyclerView
activity_main.Xml部分

<?xml version = "1.0" encoding="utf-8"?>


<android.support.v7.widget.RecyclerView
android:id="@+id/teach_recycler"
android:layout_width=“match_parent”
android:layout_height=“match_parent”/>

item.xml部分

<?xml version = "1.0" encoding="utf-8"?>





Model.java部分
public class Model
{
private String name;
private int height;
public int getHeight()
{
return height;
}
public void setHeight(int height)
{
this.height = height;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
}
布局
private void initView()
{
mRecyclerView = (RecyclerView)findViewById(R.id.teach_recycler);
//设置布局管理器
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
// //设置布局的排版方向
mRecyclerView.setLayoutManager(layoutManager);
//绑定适配器
RecyclerAdapter adapter = new RecyclerAdapter(this, getData());
mRecyclerView.setAdapter(adapter);
adapter.setOnItemClickListener(this);//将接口传递到数据产生的地方
}

/**

  • 获取数据源
    */
    public List getData()
    {
    List data = new ArrayList<>();
    for (int i = 0; i < 30; i++)
    {
    Model model = new Model();
    model.setName("" + i);
    model.setHeight(((int)(Math.random() * 100 + 200)));
    data.add(model);
    }
    return data;
    }

@Override
public void onItemClick(int position, Model model)
{
Log.e(TAG, "onItemClick: " + position);
}
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值