Android新组件RecyclerView的简单使用

学习以WWWH的方式去学:

一、什么是RecyclerView?
官方说明:

RecyclerView is a more advanced and flexible version of ListView. This
widget is a container for large sets of views that can be recycled and
scrolled very efficiently. Use the RecyclerView widget when you have
lists with elements that change dynamically.

(recyclerview是更先进和灵活的版本的列表视图。这个小工具是一大套,可以回收和滚动视图的容器非常有效。当你使用recyclerview widget元素动态变化表。)

二、我们为什么要使用RecyclerView?

   那么有了ListView、GridView为什么还需要RecyclerView这样的控件呢?整体上看RecyclerView架构,提供了一种插拔式的体验,高度的解耦,异常的灵活,通过设置它提供的不同LayoutManager,ItemDecoration , ItemAnimator实现令人瞠目的效果。

三、RecyclerVIew优,缺点?
RecyclerVIew优点:

RecyclerView本身它是不关心视图相关的问题的,由于ListView的紧耦合的问题,google的改进就是RecyclerView本身不参与任何视图相关的问题。它不关心如何将子View放在合适的位置,也不关心如何分割这些子View,更不关心每个子View各自的外观。更进一步来说就是RecyclerView它只负责回收和重用的工作,这也是它名字的由来。所有关于布局、绘制和其他相关的问题,也就是跟数据展示相关的所有问题,都被委派给了一些”插件化”的类来处理。这使得RecyclerView的API变得非常灵活。你需要一个新的布局么?接入另一个LayoutManager就可以了!你想要不同的动画么?接入一个新的ItemAnimator就可以了,诸如此类等等。

RecyclerView缺点:

在RecyclerView中,没有一个onItemClickListener方法。所以目前在适配器中处理这样的事件比较好。如果想要从适配器上添加或移除条目,需要明确通知适配器。这与先前的notifyDataSetChanged()方法稍微有些不同。

四、RecyclerView的简单使用?
1.你想要控制其显示的方式,请通过布局管理器LayoutManager
2.Adapter:继承自RecyclerView.Adapetr类,
3.ViewHolder:继承自RecyclerView.ViewHolder类
4.拓展ItemAnimator ItemDecoration

五、布局管理器

1)LayoutManager(LinearLayoutManager)
    这里给出经常使用的已经实现好了的LayoutManager类,LinearLayoutManager、(线性布局管理器)
支持横向,纵向。
mRcView = (RecyclerView) findViewById(R.id.id_recyclerview);
mRcView.setLayoutManager(new LinearLayoutManager(this));
2)布局管理器LayoutManager(GridLayoutManager )
   这里给出经常使用的已经实现好了的 LayoutManager类,GridLayoutManager 、(网格布局管理器)
mRcView = (RecyclerView) findViewById( R.id.id_recyclerview);
mRcView.setLayoutManager(new GridLayoutManager(this,4));
3)布局管理器LayoutManager(StaggeredGridLayoutManager)
纵向的
mRcView.setLayoutManager(new StaggeredGridLayoutManager(4,   StaggeredGridLayoutManager.VERTICAL));
横向的
mRclerView.setLayoutManager(new StaggeredGridLayoutManager(4, StaggeredGridLayoutManager.HORIZONTAL));

六、Adapter类的定义:

自定义一个HomeAdapter类,这里面需要注意:
重写两个重要的方法:
       onBindViewHodler(ViewGroup parent, int viewType);
       onCreateViewHolder(ViewHolder holder, int position);
       getItemCount()
       同时这边我们还需要创建一个ViewHolder类。
class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder>
    {

        @Override
        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
        {
            MyViewHolder holder = new MyViewHolder(LayoutInflater.from(
                    HomeActivity.this).inflate(R.layout.item_home, parent,
                    false));
            return holder;
        }

        @Override
        public void onBindViewHolder(MyViewHolder holder, int position)
        {
            holder.tv.setText(mDatas.get(position));
        }

        @Override
        public int getItemCount()
        {
            return mDatas.size();
        }

        class MyViewHolder extends ViewHolder
        {

            TextView tv;

            public MyViewHolder(View view)
            {
                super(view);
                tv = (TextView) view.findViewById(R.id.id_num);
            }
        }
    }

}

RecyclerView总结

Adapter:包装数据集合并且为每个条目创建视图。

ViewHolder:保存用于显示每个数据条目的子View。

LayoutManager:将每个条目的视图放置于适当的位置。

ItemDecoration:在每个条目的视图的周围或上面绘制一些装饰视图。

ItemAnimator:在条目被添加、移除或者重排序时添加动画效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值