一、概述:
(一)、概念: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) 添加动画延时时长