斯塔福,十一年吉他谱,win ce
现阶段,我们创建了最简单的android项目,现在在此公布github链接,希望大家多多支持。
因为之前谈到过包结构的定义,我选择第一种方式,按照android特性定义,所以你的包结构应该是这样的:
recyclerview
在mainactivity中,我们需要用到recyclerview这一新控件,那么如何引用,如何使用它呢?在gradle文件中添加库依赖:
compile 'com.android.support:recyclerview-v7:23.1.1'
这样我们可以使用recyclerview啦。
recyclerview的用法
那么好了,recyclerview是一个控件,所以你需要在xml中进行声明,当然其也支持在java代码中动态构建。
通过实例化后,你需要为其设置layoutmanager和adapter。
关于layoutmanager,用来确定每一个item如何进行排列摆放,何时展示和隐藏。回收或重用一个view的时候,layoutmanager会向适配器请求新的数据来替换旧的数据,这种机制避免了创建过多的view和频繁的调用findviewbyid方法(与listview原理类似)。
目前sdk中提供了三种自带的layoutmanager:
基于原型图:
linearlayoutmanager的效果图如下:
gridlayoutmanager的效果图如下所示:
关于adapter
我们使用到了cardview,而其也是v7包里单独存在的,所以你需要在gradle文件中申明:
compile 'com.android.support:cardview-v7:23.1.1'
注意每个cardview都是一个item,类似于listview,因此你可以为cardview添加自定义布局。如下所示:
<android.support.v7.widget.cardview xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/list_card_view" style="@style/cardstyle" android:clickable="true" android:foreground="?android:attr/selectableitembackground" card_view:cardcornerradius="4dp" card_view:cardelevation="4dp"> <relativelayout style="@style/cardrelativelayoutstyle" tools:ignore="uselessparent"> <textview android:id="@+id/itemtext" style="@style/carditem"/> </relativelayout> </android.support.v7.widget.cardview>
对应的adapter需要继承recycleview.adapter,其为泛型,需要传入你自定义的viewholder。所以你也需要定义你的静态内部类,让其继承recycleview.viewholder,并且recycleview并没有相关itemclick点击事件,所以你需要在静态类中定义点击事件,具体如下所示:
public class cardviewadapter extends recyclerview.adapter<cardviewadapter.cardviewholder>{ public cardviewadapter(list<itemtest> list, context context){ mlist=list; mcontext=context; } @override public cardviewholder oncreateviewholder(viewgroup parent, int viewtype) { view item= layoutinflater.from(mcontext).inflate(r.layout.adapter_item,parent,false); return new cardviewholder(item, new cardviewholder.clicklistener() { @override public void onwholeclick(int position) { redirecttodetail(position); } }); } public static class cardviewholder extends recyclerview.viewholder implements view.onclicklistener{ public cardviewholder(view itemview,clicklistener clicklistener) { super(itemview); this.mclicklistener=clicklistener; list_card_view=(cardview)itemview.findviewbyid(r.id.list_card_view); list_card_view.setonclicklistener(this); } public interface clicklistener{ void onwholeclick(int position); } } }
关于recycleview和cardview的相关特性和深入理解,将会在下一篇介绍。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android apk 项目一键打包并上传到蒲公英的实现方法
Android 自定义LineLayout实现满屏任意拖动功能的示例代码
android 限制某个操作每天只能操作指定的次数(示例代码详解)
Android 集成 google 登录并获取性别等隐私信息的实现代码
网友评论