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,避免重复创建。