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、付费专栏及课程。

余额充值