(2-11)RecyclerView
其官方定义是:A flexible view for providing a limited window into a large data set
能够灵活的实现大数据集的展示,视图的复用管理比ListView更好,能够显示列表,网格,瀑布流等形式,且不同的ViewHolder能够实现item多元化的功能
1.LinearRecyclerView
首先建立两个Activity,RecyclerViewActivity和LinearRecyclerViewActivity,以及一个LinearAdapter.
在activity_linear_recycler_view布局文件中声明RecyclerView控件id为rv_main,在布局文件activity_recycler_view中创建一个Button控件,id为btn_linear
在LinearAdapter中
public class LinearAdapter extends RecyclerView.Adapter<LinearAdapter.LinearViewHolder> {
private Context mContext;
LinearAdapter(Context context){
this.mContext = context;
}
//负责每个子项的布局
@Override
public LinearAdapter.LinearViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//LayoutInfluter是用于找res/layout/下的xml布局文件,并且实例化,作用类似于findViewById(),但是findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)
//其中influte方法参数:
//reSource:View的layout的ID
//root:需要附加到resource资源文件的根控件,inflate()会返回一个View对象,如果第三个参数attachToRoot为true,就将这个root作为根对象返回,否则仅仅将这个root对象的LayoutParams属性附加到resource对象的根布局对象上,也就是布局文件resource的最外层的View上。如果root为null则会忽略view根对象的LayoutParams属性(注意)。
//attachToRoot:是否将root附加到布局文件的根视图上
return new LinearViewHolder(LayoutInflater.from(mContext).inflate(R.layout.layout_linear_item, parent, false));
}