Android RecyclerView使用方法详解
本文为大家分享了AndroidRecyclerView使用方法,供大家参考,具体内容如下
1、RecyclerView是在Androidsupport-v7里面提供的新的列表组件,用来替代传统的ListView。
.要使用RecyclerView需要给我工程添加support:recycle-v7的支持:app右键-OpenModuleSettings-Dependencies(依赖项)-点+号-添加一个库upport:recycle-v7 -代码实现
.给TextView呈现数据
publicclassMainActivityextendsAppCompatActivity{
//创建RecyclerView
privateRecyclerViewrecyclerView;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
recyclerView=newRecyclerView(this);
//把它当做Activity的内容布局
setContentView(recyclerView);
//设置RecyclerView的布局
recyclerView.setLayoutManager(newLinearLayoutManager(this));
//为RecyclerView填充内容-创建一个Adapter-需要重写三个函数
recyclerView.setAdapter(newRecyclerView.Adapter(){
//首先自定义一个类继承RecyclerView.ViewHolder实现构造函数
classViewHolerextendsRecyclerView.ViewHolder{
//在ViewHolder里面绑定子对象的视图
privateTextViewtv;
publicViewHoler(TextViewitemView){
super(itemView);
tv=itemView;//通过这种方式TextView就可以跟ViewHolder进行关联
}
//在外界公开一个函数getTV(),用它来返回这个TextView
publicTextViewgetTV(){
returntv;
}
}
//创建ViewHolder的方法
@Override
publicRecyclerView.ViewHolderonCreateViewHolder(ViewGroupparent,intviewType){
returnnewViewHoler(newTextView(parent.getContext()));
}
//onBindViewHolder可以对TextView进行赋值,-在外界进行配置
@Override
publicvoidonBindViewHolder(RecyclerView.ViewHolderholder,intposition){
ViewHolervh=(ViewHoler)holder;
vh.getTV().setText("Item"+position);
}
//获取RecyclerView子对象的数量
@Override
publicintgetItemCount(){
return1000;
}
});
}
}
.用数组承载展示数据
@Override
publicvoidonBindViewHolder(RecyclerView.ViewHolderholder,intposition){
ViewHolervh=(ViewHoler)holder;
vh.getTV().setText(data[position]);
}
@Override
publicintgetItemCount(){
returndata.length;
}
/*写一个数组呈现出来从网络一系列的途径获取的数据都是数组呈现出来*/
privateString[]data=newString[]{"hello","wang","xiaobao"};
});
}
2、使用资源文件自定义列表项
.因为我们在之前使用自定义列表项的方式直接写程序,在很多时候你会发现如果直接在程序里面写界面,最终修改是非常麻烦的,所以我们要学会使用资源文件来配置。
.新建一个资源文件 layout-New-Layoutresourcefile-list_cell-添加两个TextView
然后
classMyAdapterextendsRecyclerView.Adapter{
/*newRecyclerView.Adapter()可以转移到单独的文件里去
*在Adapter()内部:点击右键-Refactor(重构)-Move-移到一个类里面去.
*它会全自动的把匿名类提取成一个内部类。
*
*之后再继续移动到一个单独的文件里面。
*/
classViewHolerextendsRecyclerView.ViewHolder{
privateViewroot;//暂无意义,参考上面案例,可以实现与外界连接
privateTextViewtvTitle,tvContent;
publicViewHoler(Viewroot){
super(root);
//我们知道传进来的布局就是list_cell;创建之后就可以获取到这两个控件。
tvTitle=root.findViewById(R.id.tv_title);
tvContent=root.findViewById(R.id.tv_content);
}
//需要添加两个get方法被外界访问到的
publicTextViewgetTvTitle(){
returntvTitle;
}
publicTextViewgetTvContent(){
returntvContent;
}
}
@Override
publicRecyclerView.ViewHolderonCreateViewHolder(ViewGroupparent,intviewType){
/*
*之后要创建View,不是newTextView()我们要换种方式,根据一个资源进行创建,使用LayoutInflater.from
*LayoutInflater:布局解释器,用布局解释器解析一个布局,布局首先传进来的是一个资源,资源就是建立的cell
*第二项:是我们创建的布局的根对象,这里传null,通过这种方式我们就创建了这种布局。然后获取控件
*/
returnnewViewHoler(LayoutInflater.from(parent.getContext()).inflate(R.layout.list_cell,null));
}
@Override//分别来进行配置//我们来创建一个数据对象。创建构造函数
publicvoidonBindViewHolder(RecyclerView.ViewHolderholder,intposition){
ViewHolervh=(ViewHoler)holder;
//首先获取到这些数据
Cell_Datacd=data[position];
vh.getTvTitle().setText(cd.title);
vh.getTvContent().setText(cd.title);
}
//创建完对象之后,它是一个CellData[]
privateCell_Data[]data=newCell_Data[]{newCell_Data("王小宝","hhh"),newCell_Data("新闻","这个新闻不错")};
@Override
publicintgetItemCount(){
returndata.length;
}
}
//创建一个数据对象的
//列表项数据
publicclassCell_Data{
publicCell_Data(Stringtitle,Stringcontent){
this.title=title;
this.content=content;
}
publicStringtitle="title";
publicStringcontent="content";
}
3、RecyclerView的布局样式
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
recyclerView=newRecyclerView(this);
setContentView(recyclerView);
//true;是否翻转可以左右拖动-线性布局
recyclerView.setLayoutManager(newLinearLayoutManager(MainActivity.this,LinearLayoutManager.HORIZONTAL,true));
//创建一个表格布局默认是垂直方向的可以上下
recyclerView.setLayoutManager(newGridLayoutManager(this,3));
recyclerView.setAdapter(newMyAdapter());
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。