05
2017
10

RecylerView的使用

RecylerView是类似于ListView、GridView的控件,但是它标准化了ViewHolder,而且比ListView、GridView这些控件更加灵活,并且还能够实现他们不能实现的功能,在布局管理器中可以设置多种格式:1、LinearLayoutManager可以使内容线性排列,横向或纵向,下一个参数是布尔类型的参数。2、GridLayoutManager 是网格式布局管理,第二个参数是int类型的数字,你想让布局显示几列就可以设置成为几,第三个参数可以设置横纵向,第四个参数是布尔类型的参数。3、StaggeredGridLayoutManager 是上面那两个控件不能实现的功能,
他是瀑布流,其参数和网格式布局的参数一样,但显示的效果不一样

在MainActivity中的

public class MainActivity extends AppCompatActivity {
RecyclerView rv;
//初始化数据的图片数组
int[] mListIcons = new int[]{};
//初始化数据的标题数组
String[] mListTitle = new String[]{};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到布局中的ReclerView控件
rv = (RecyclerView) findViewById(R.id.rv);
//初始化数据的方法
initData();
}

private void initData() {
    //样式,boolean代表展示的方向
    //线性布局管理器
    //LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
    //网格式布局管理器
    GridLayoutManager layoutManager=new GridLayoutManager(this,3,GridLayoutManager.VERTICAL,false);
    //瀑布流式布局管理器
    //StaggeredGridLayoutManager layoutManager=new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL);
    //关联布局管理器
    rv.setLayoutManager(layoutManager);
    //设置适配器
    rv.setAdapter(new RecyclerView.Adapter() {
        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //加载RecylerView的样式布局                
        View view = View.inflate(parent.getContext(), R.layout.item, null);
            RecyclerView.ViewHolder viewHolder = new RvViewholder(view);
            return viewHolder;
        }

        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
            //进行数据设置
            RvViewholder myViewholder = (RvViewholder) holder;
            //设置图片
            myViewholder.itemIv.setImageResource(mListIcons[position]);
            //设置标题数据
            myViewholder.itemTv.setText(mListTitle[position]);
        }
//重写得到条目的数量
        @Override
        public int getItemCount() {
            return mListIcons.length;
        }

//ViewHolder优化
class RvViewholder extends RecyclerView.ViewHolder {

            public ImageView itemIv;
            public TextView itemTv;

     /**
             * 初始化控件
             */
            public RvViewholder(View itemView) {
                super(itemView);
                itemIv = (ImageView) itemView.findViewById(R.id.item_iv);
                itemTv = (TextView) itemView.findViewById(R.id.item_tv);
            }
        }

    });
}

}
总结
可以看见相比于ListView,RecyclerView非常灵活,但其实这篇文章只是介绍了RecyclerView的基本使用,并没有深入的进行介绍。在使用RecyclerView时候,必须指定一个适配器Adapter和一个布局管理器LayoutManager。适配器继承RecyclerView.Adapter类,具体实现类似ListView的适配器,取决于数据信息以及展示的样式。布局管理器用于确定RecyclerView中Item的展示方式以及决定何时用Item,避免重复创建。

上一篇:DataPicker和TimePicker 下一篇:使用 RecyclerView 实现简单时间轴