Android 5.0后(21) Google新推出了一个新的组件 RecyclerView 这个控件是来代替 ListView GirdView等 控件的 省去了ListView原本需要程序员做的优化(其实我内心是抗拒的,你都省了,还要我们程序员干什么-、-),既然能省事,效率也高,也必须得学习一下。
使用方法:
先定义xml文件
<android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lv" ></android.support.v7.widget.RecyclerView>和listview一样简单的定义即可 有其他需求另行定义
在Java代码中实例化RecyclerView 设置它的LayoutManager 和 adapter
LinearLayoutManager manager = new LinearLayoutManager(this); manager.setOrientation(LinearLayoutManager.VERTICAL); lv.setLayoutManager(manager); lv.setAdapter(new MyAdapter());
LinearlayoutManager 、 GirdLayoutManager 、 StaggeredGridLayoutManager
线性 九宫格 和 瀑布流布局管理器
其中还可以设置item增加和删除时的动画 lv.setItemAnimator设置动画
RecyclerView的 adapter 不再使用 BaseAdapter 而使用RecyclerView中的Adapter
class MyAdapter extends RecyclerView.Adapter<MyAdapter.ListHolder>{ @Override public ListHolder onCreateViewHolder(ViewGroup parent, int viewType) { //返回一个ViewHolder 对象 View view = View.inflate(MainActivity.this,R.layout.content_main,null); return new ListHolder(view); } @Override public void onBindViewHolder(ListHolder holder, int position) { //绑定数据 holder.setData(position); } @Override public int getItemCount() { return 50; } class ListHolder extends RecyclerView.ViewHolder{ TextView txt; public ListHolder(View itemView) { super(itemView); txt = (TextView) itemView.findViewById(R.id.txt); } public void setData(int position){ txt.setText("哈哈哈"+position); } } }这样就可以了
RecyclerView不需要以前那样 复用ConTentView