1、 导入recycleview的包
compile 'com.android.support:recyclerview-v7:27.1.1'
2、 或者 导入整个design的包
compile 'com.android.support:design:27.1.1'
/** * 新闻实体类 */public class news { private string title; private string content; private string gettitle(){ return title; } private string getcontent(){ return content; } public void ttitle(string title) { this.title = title; } public void tcontent(string content) { this.content = content; }}
public class newsadapter extends recyclerview.adapter{ private list newslist ; public class newsviewholder extends recyclerview.viewholder{ //声明子布局中的各个控件 private textview textview; public newsviewholder(view itemview) { super(itemview); textview = (textview)itemview.findviewbyid(r.id.news_title_item); } } public newsadapter(list newslist){ this.new个人工作证明范本slist = newslist; } @nonnull @override public newsadapter.newsviewholder oncreateviewholder(@nonnull viewgroup parent, int viewtype) { view view = layoutinflater.from(parent.getcontext()).inflate(r.layout.news_item,parent,fal); final newsviewholder newsviewholder = new newsviewholder(view); //子布局点击事件 view.tonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { news news = newslist.get(newsviewholder.getadapterposition()); if(istwopane){ 妈妈再打我一次出处 //如果是双页模式,则刷新newsfragment中的内容 newscontentfragment newscontentfragment = (newscontentfragment) getfragmentmanager() .findfragmentbyid(r.id.news_content_fragment); newscontentfragment.refresh(news.gettitle(),news.getcontent()); //如果是单页模式,则直接启动newscontentactivity newscontentactivity.actionstart(getactivity(),news.gettitle(),news.getcontent()); } } }); return newsviewholder; } @override public void onbindviewholder(@nonnull newsadapter.newsviewholder holder, int position) { news news = newslist.get(position); holder.textview.ttext(news.gettitle()); } @o儿童节手抄报verride public int getitemcount() { return newslist.size(); }}
1、其中,定义newsadapter类(自己的适配器),由于其继承自recyclerview.adapter,所以需要重写oncreateviewholder()(用来创建viewholder)、onbindviewholder()(用来创建viewholder)、getitemcount()(得到列表的长度)三个方法。
2、adapter类的后面有一个泛型 为viewholder类型。
所以,创建一个newsviewholder类继承自viewholder,写其构造函数时传入参数itemview,并声明此布局中各个控件。 在newsadapter类后面加上刚定义的viewholder的泛型,并修改oncreateviewholder()、onbindviewholder()的返回值类型或者参数类型。
3、oncreateviewholder()方法中,声明并实例化newsviewholder。由于newsviewholder方法需要传入itemview布局,所以要先用layoutinflater填充布局,此时可能需要context信息,我们可以用parent或者重写adapter类的构造方法,传入context参数,一般我们还会将列表内容作为参数传入。
4、onbindviewholder()方法中,通过holder向itemview的控件中填充内容。
5、getitemcount()方法中,返回adapter构造函数传入的列表内容参数的长度。
5、itemview的点击事件,可以放在oncreateviewholder() 或者 onbindviewholder()中,也可以放在adapter类的外面。
当写在adapter类外面时,需要用回调方法: a、在adapter中定义一个接口onitemclicklis路标图片tenr,其中写onclick方法并传入参数pos。 b、声明接口,并在adapter构造函数中传入接口参数。 c、在adapter外部使用其构造函数是用内部函数完成点击事件。
6、最后在主activity或者fragment中,声明recycleview控件,并调用tlayoutmanager方法设置manager,以及调用tadapter方法设置adapter。
(其中,列表之间如果要有间隔,则此时通过recycleview调用additemdecoration()方法,定义一个mydecoration类继承itemdecoration,通过重写其中的三个方法完成一些功能,其中有一定间隔用getitemoffts()方法。)
recyclerview mrecyclerview = (recyclerview)view.findviewbyid(r.id.news_title_recycle_view); linearlayoutmanager linearlayoutmanager = new linearlayoutmanager(getactivity()); mrecyclerview.tlayoutmanager(linearlayoutmanager); newsadapter newsadapter = new newsadapter(getnews()); mrecyclerview.tadapter(newsadapter);
1、主要通过linearlayoutmanager调用torientation方法设置为水平滚动
layoutmanager.torientation(linearlayoutmanager.horizontal);
2、修改itemview布局文件 为水平距离wrap-content
1、主要是tlayoutmanager时,选择网格的manager
newstitlerecyclerview.tlayoutmanager(new gridlayoutmanager(getactivity(),3));
1、主要是tlayoutmanager时,选择瀑布流的manager
newstitlerecyclerview.tlayoutmanager(new staggeredgridlayoutmanager(2,staggeredgridlayoutmanager.vertical)); //为瀑布流布局 当后面参数为垂直,前面的2表示两列
1、根据position不同在adapter中重写getitemviewtype方法,
@override public int getitemviewtype(int position) { i龙年新年对联f(position % 2==0){ return 0; }el{ return 1; } }
2、 修改oncreateviewholder方法
view view = layoutinflater.from(parent.getcontext()).inflate(r.layout.news_item, parent, fal); if(viewtype==0){ return new viewholder(view); }el{ return new viewholder2(view); }
3、相应的修改onbindviewholder方法
本文发布于:2023-04-03 15:20:31,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/3fe3bbed36bf46cffcd3d883bea5e473.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:UI.doc
本文 PDF 下载地址:UI.pdf
留言与评论(共有 0 条评论) |