Android RecyclerView的使用

RecyclerView是谷歌新推出的一个控件,关注于控件的回收与复用
可以实现的效果:可以实现Listview,gridview,也可以实现横向的listview和gridview,瀑布流。
与其相关的5大主要类:adapter,ViewHolder,LayoutManger(用于风格和位置),ItemDecoration(用于间隔),ItemAnimator(用于内容的删除,增加的动画)。
话不多说,直接说下大概用法吧。
Adapter,ViewHolder的用法:
首先是RecyclerView用成listview的用法。首先先在布局声明一个RecyclerView。然后创建一个继承RecyclerView.Adapter的类,这就是RecyclerView适配器的不同之处.代码和解释如下:

class HomeAdapter extends RecyclerView.Adapter<MyViewHolder>//注意此处的自定义ViewHolder类,该类继承于ViewHolder,如下面代码所示(这就是Google强制我们用ViewHolder的原因)
{
        @Override
        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)//该方法用来加载子Item
        {
            View view=LayoutInflater.from(              Content).inflate(R.layout.item_list, parent,false);//这是我们平常用来加载布局的操作
            MyViewHolder holder=new MyViewHolder(view);//这个构造方法传入view,是必须的
            return holder;//返回我们自定义的Viewholder
        }

        @Override
        public void onBindViewHolder(MyViewHolder holder, int position)//这个方法是用来进行填充内容,时间点击,于控件绑定的操作
        {
            //例如设置文本等holder.tv.setText();
        }

        @Override
        public int getItemCount()//这个不用多说吧,就是个数量
        {
            //例如return mDatas.size();
        }

        class MyViewHolder extends ViewHolder//这个就是继承ViewHolder,里面的成员是你布局用有控件的成员
        {

            TextView tv;

            public MyViewHolder(View view)
            {
                super(view);
                tv = (TextView)view.findViewById(R.id.id_num);//赋值给成员
            }
        }
    }

对于adapter和ViewHolder的用法就大概如此

LayoutManger的用法:
RecyclerView提供了

mRecyclerView.setLayoutManager(layoutmanger);//这里传入一个LayoutManger

所以我们可以通过传入不同的Layoutmanger子类进行RecyclerView的排版:
1.LinearLayoutManager 现行管理器,支持横向、纵向,例如

LinearLayoutManager ln=new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);//第2个参数是属性,表示是垂直布局

2.GridLayoutManager 网格布局管理器,例如

GridLayoutManager grid=new GridLayoutManager(this,3)//第2个参数表示一行要多少个

3.StaggeredGridLayoutManager 瀑布就式布局管理器和横向的listv,例如:

StaggeredGridLayoutManager stagg=newStaggeredGridLayoutManager(4,StaggeredGridLayoutManager.VERTICAL);//通过设置属性,可实现横向的listview等

ItemAnimator的用法

可通过方法,设置添加和删除的动画

mRecyclerView.setItemAnimator(new DefaultItemAnimator());//这是谷歌给我们提供的动画

我们也可以通过自己制作,或者在git上查找一些动画
https://github.com/gabrielemariotti/RecyclerViewItemAnimators

最后,补充下特别要注意的3点:
1、进行查补动画时,应该调用notifyItemInserted(position)与notifyItemRemoved(position),而不是notifyDataSetChanged()
2.由于RecyclerView没有item点击事件,所以也只能自定义接口进行实现
3.由于用notifyItemInserted(position),notifyItemRemoved(position)方法,只是在原来插入,并没有刷新位置,所以会出现插入多少个,都是同样的postison,所以在item点击事件获取位置中,应该运用getLayoutPosition()获取item当前位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值