RecyclerView

一、概述:
(一)、概念: RecyclerView是什么? 
 RecyclerView是support.v7包中的新组件,它是ListView的升级版。

如何导入?
        在Android Studio开发工具的build.gradle(Module:app)中的dependencies下添加一句:
compile ‘com.android.support:recyclerview-v7:23.0.1’,然后同步就可以导入了。然后,在main.xml配置文件中写入:<android.support.v7.widget.RecyclerView/>并配置相关属性,就可以使用了。

二、Recycler的使用步骤?
(一)、自定义适配器
1、自定义适配器必须继承 RecyclerView. Adapter<T>,泛型类型使用自定义适配器中自定义的ViewHolder类(此类必须继承RecyclerView.ViewHolder)

例子如下:
public class CustomAdapter extends RecyclerView. Adapter<CustomaAdapter. ViewHolder>{
        //自定义ViewHolder类
        public static class  ViewHolder extends  RecyclerView.ViewHolder{
       
       }

        // 重写以下三个方法
         onCreateViewHolder(ViewGroup parent,int viewType)

         onBindViewHolder(ViewHolder holder,int position)

         getItemCount()
}

(二)、Recycler初始化并设置属性
1、通过 findViewById()来初始化;

2、 动态设置recyclerview的layoutmanager
举例如下:
1)、线性布局管理器:
// 如果可以确定每个item的高度是固定的,设置这个选项可以提高性能
  recyclerView_main.setHasFixedSize(true);
  // 设置一个垂直方向的layout manager
  int orientation = LinearLayoutManager.VERTICAL;
  LinearLayoutManager linearLayoutManager = new LinearLayoutManager(  mContext, orientation, false);

//设置 水平滚动
   recyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager. HORIZONTAL)

2)、网格布局管理器:
    GridLayoutManager gridLayoutManager = new  GridLayoutManager(mContext, 3);
     gridLayoutManager. setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup(){
         public int getSpanSize(int position){
             if(position%2==0){
                 return 3;
            }
            return 1;
        }
     });

 // 设置布局管理器
  recyclerView_main.setLayoutManager(gridLayoutManager);
  adapter = new MyAdapter(this, totalList, recyclerView_main);
  recyclerView_main. setAdapter(adapter);
  recyclerView_main. setItemAnimator(new DefaultItemAnimator());


3、设置条目的间距
addItemDecoration(new ItemDecoration(){
public void getItemOffsets(){}})  

4、添加 点击事件
可以在自定义的适配器中添加一个接口:
  public interface OnChildClickListener{
      void onChildClick(View view,int position,String data);
}


三、CRUD数据后, 刷新UI界面:
最基本的ListView刷新的方法: notifyDataSetChanged()

添加一条数据: notifyItemInserted(position);
添加多条数据: notifyItemRangeInserted(size,collection.size())

移除一条数据: notifyItemRemoved(position)
移除多条数据: notifyItemRangeRemoved(positionStart, itemCount);

更新一条数据: notifyItemChanged(position)
更新一批数据: notifyItemRangeChanged(positionStart, itemCount);


四、动画系统
   用recyclerView的setItemAnimator()方法设置动画
   具体实现方式为:复制DefaultItemAnimator类,并做修改,改成自己需要的类,这个类中的主要方法有:
    animateRemove(final ViewHolder holder);  准备删除动画
    animateAdd(final ViewHolder holder);   准备添加动画
    animateRemoveImpl(final ViewHolder holder): 执行删除动画
    animateAddImpl(final ViewHolder holder):执行添加动画
    setAddDuration(time)  添加动画延时时长

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值