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