android RecyclerView
mRecyclerView = findView(R.id.id_recyclerview);
//设置布局管理器
mRecyclerView.setLayoutManager(layout);
//设置adapter
mRecyclerView.setAdapter(adapter)
//设置Item增加、移除动画
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
//添加分割线
mRecyclerView.addItemDecoration(new DividerItemDecoration(
getActivity(), DividerItemDecoration.HORIZONTAL_LIST));
Adapter
- OnCreateViewHolder(),需要创建并返回一个ViewHolder对象,inflate view,findViewById。
- onBindViewHolder(),绑定控件数据,ViewHolder+Position。
- getItemCount(),返回数据项个数
- ViewHolder
class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>
{
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
MyViewHolder holder = new MyViewHolder(LayoutInflater.from(
HomeActivity.this).inflate(R.layout.item_home, parent,
false));
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position)
{
holder.tv.setText(mDatas.get(position));
}
@Override
public int getItemCount()
{
return mDatas.size();
}
class MyViewHolder extends ViewHolder
{
TextView tv;
public MyViewHolder(View view)
{
super(view);
tv = (TextView) view.findViewById(R.id.id_num);
}
}
}
LayoutManager
- LinearLayoutManager 线行管理器,支持横向、纵向,类似ListView。
- GridLayoutManager 网格布局管理器,类似GridView。
- StaggeredGridLayoutManager 瀑布流式布局。
ItemDecoration
- getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state)
为outRect设置的4个方向的值,作为decoration,计入item的padding
- onDraw(Canvas c, RecyclerView parent, RecyclerView.State state)
- onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state)
ItemAnimator
- 更新数据使用notifyItemInserted(position)与notifyItemRemoved(position)