Android列表RecyclerView排列布局
程序员文章站
2022-03-20 18:48:09
本文实例为大家分享了android列表recyclerview排列布局的具体代码,供大家参考,具体内容如下效果图:1.要添加相关的依赖implementation 'androidx.recycler...
本文实例为大家分享了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.制作模板显示
这里的模板是自定义的,需要什么样的就怎么布局,这里只是模板,后面做好就会根据模板生成样式的
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);
到这里就完成了,点击事件 加载数据的方法里面都是可以按需求自定义的,布局也是可按需要来布局的,这里给的只是一个模板。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: js实现表格单列按字母排序
下一篇: AI将图片保存为JPG等模式方法图解
推荐阅读
-
Android RecyclerView加载两种布局的方法
-
Android RecyclerView线性布局详解(1)
-
Android RecyclerView网格布局(支持多种分割线)详解(2)
-
Android RecyclerView网格布局(支持多种分割线)详解(2)
-
Android RecyclerView线性布局详解(1)
-
Android单个RecyclerView实现列表嵌套的效果
-
Android中RecyclerView实现多级折叠列表效果(二)
-
Android中RecyclerView实现多级折叠列表效果(TreeRecyclerView)
-
Android单个RecyclerView实现列表嵌套的效果
-
Android使用RecyclerView实现列表数据选择操作