欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Android列表RecyclerView排列布局

程序员文章站 2022-03-20 18:48:09
本文实例为大家分享了android列表recyclerview排列布局的具体代码,供大家参考,具体内容如下效果图:1.要添加相关的依赖implementation 'androidx.recycler...

本文实例为大家分享了android列表recyclerview排列布局的具体代码,供大家参考,具体内容如下

效果图:

Android列表RecyclerView排列布局

1.要添加相关的依赖

implementation 'androidx.recyclerview:recyclerview:1.1.0'

2.然后布局文件中准备容器

这个标签是显示目标容器对象的,其他需求可自定义

<androidx.recyclerview.widget.recyclerview
 android:id="@+id/rv_list"
 android:layout_width="match_parent"
 android:layout_height="wrap_content">

 </androidx.recyclerview.widget.recyclerview>

3.制作模板显示

这里的模板是自定义的,需要什么样的就怎么布局,这里只是模板,后面做好就会根据模板生成样式的

Android列表RecyclerView排列布局

4.写一个适配器,用于加载数据

public class shiftinformationadapter extends recyclerview.adapter<shiftinformationadapter.shiftinformation>{
 private list<shiftinformationbean> mlistdata;//需要加载的数据
 private activity mactivitycontext; //上下文
 private myapplication myapplication;//全局application对象
 private onitemclicklistener onitemclicklistener;//存放点击事件的实现类

 //存放点击事件的实现类
 public interface onitemclicklistener{
 //整条数据的点击事件
 void onitemclick(view view,shiftinformationbean shift,int position);
 //点击》事件
 void onimageclick(view view,shiftinformationbean shift,int position);
 }

 /**
 * 构造方法 获取需要的参数
 * @param mlistdata 需要的数据
 * @param mactivitycontext 上下文
 * @param myapplication app全局变量
 */
 public shiftinformationadapter(list<shiftinformationbean> mlistdata ,activity mactivitycontext,myapplication myapplication){
 this.mactivitycontext = mactivitycontext;
 this.mlistdata = mlistdata;
 this.myapplication = myapplication;
 }
 
 //设置点击事件方法
 public void setitemclicklistener(onitemclicklistener onitemclicklistener){
 this.onitemclicklistener = onitemclicklistener;
 }
 /**
 * 生命周期方法 创建
 * 创建viewholder 设置recyclerviewitem布局
 * @param parent
 * @param viewtype
 * @return
 */
 @nonnull
 @override
 public shiftinformation oncreateviewholder(@nonnull viewgroup parent, int viewtype) {
 view view = layoutinflater.from(parent.getcontext()).inflate(r.layout.item_rv_search_result,parent,false);
 return new shiftinformation(view);
 }

 /**
 * 绑定数据
 * @param holder 显示的列表具体信息的布局
 * @param position
 */
 @override
 public void onbindviewholder(@nonnull shiftinformation holder, int position) {
 shiftinformationbean shift = mlistdata.get(position);
 if(shift != null){
 //余座剩余小于1 灰色
 if(integer.valueof(shift.getsearchsupus()) < 1){
 //没有余座,设置为灰色
 holder.tvshiftname.settextcolor(mactivitycontext.getresources().getcolor(r.color.colorgray));
 }
 holder.tvshiftname.settext("班次名称:" +shift.getshiftname()); //==设置班次名称
 bigdecimal discount = bigdecimal.valueof(0.98);//默认
 if(myapplication.islogin()){
 discount = new bigdecimal(myapplication.getloginuser().getmemberdiscount());
 }
 //设置事件
 if(onitemclicklistener != null){
 //设置整条数据的点击事件
 holder.itemview.setonclicklistener(new view.onclicklistener() {
  @override
  public void onclick(view v) {
  onitemclicklistener.onitemclick(v,shift,position);
  }
 });
 }
 }
 }

 //告诉recyclerview有多少条数据
 @override
 public int getitemcount() {
 return mlistdata.size();
 }

 /**
 * 对外方法,用于分页添加数据
 * @param listadd 要添加的数据
 * @param loadpage 加载的页数
 */
 public void additem(list<shiftinformationbean> listadd){
 //如果是第一页 需要先清空数据列表
 this.mlistdata.clear();
 //添加数据
 if(listadd != null){
 this.mlistdata.addall(listadd);
 }
 //通知recyclerview进行改变--整体
 notifydatasetchanged();
 }

 //获取列表数据控件
 static class shiftinformation extends recyclerview.viewholder{
 textview tvshiftname ;//班次名称

 public shiftinformation(@nonnull view itemview) {
 super(itemview);
 tvshiftname = itemview.findviewbyid(r.id.tv_item_result_roomtypeinfo);
 }
 }
}

5.使用recyclerview 初始化

//===1、设置布局控制器
//=1.1、创建布局管理器
linearlayoutmanager layoutmanager = new linearlayoutmanager(mactivitycontext);
//=1.2、设置为垂直排列,用setorientation方法设置(默认为垂直布局)
layoutmanager.setorientation(linearlayoutmanager.vertical);
//=1.3、设置recyclerview的布局管理器
rvorderlist.setlayoutmanager(layoutmanager);
//==2、实例化适配器
//=2.1、初始化适配器
list<ticketpurchasevobean> mlistdata = new arraylist<>();
ticketpurchaseadapter = new ticketpurchaseadapter(mactivitycontext,mlistdata);
//=2.2设置列表项点击事件
//=2.2设置列表项点击事件
ticketpurchaseadapter.setonitemclicklistener(new ticketpurchaseadapter.onitemclicklistener() {
//方法里的参数都是可以在适配器选择的
 @override
 public void onitemclick(view view, ticketpurchasevobean data, int position) {
  
  //写需求


 }
 });
 //=2.3、设置recyclerview的适配器
 rvorderlist.setadapter(ticketpurchaseadapter);

到这里就完成了,点击事件 加载数据的方法里面都是可以按需求自定义的,布局也是可按需要来布局的,这里给的只是一个模板。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。