这是一个系列,我们将其命名为android最佳实践,如果你还没有看之前的文章:
Android最佳实践(一)
android最佳实践(二)
android最佳实践(四)
android最佳实践(五)
Android最佳实践(六)之扫描二维码模块
现阶段,我们创建了最简单的Android项目,现在在此公布github链接https://github.com/neuyu/android-best-practices,希望大家多多支持。
因为之前谈到过包结构的定义,我选择第一种方式,按照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
StaggeredGridLayoutManager
基于原型图:
LinearLayoutManager的效果图如下:
GridLayoutManager的效果图如下所示:
关于adapter我们使用到了CardView,而其也是v7包里多带带存在的,所以你需要在gradle文件中申明:
compile "com.android.support:cardview-v7:23.1.1"
注意每个cardView都是一个item,类似于listview,因此你可以为CardView添加自定义布局。如下所示:
对应的adapter需要继承RecycleView.Adapter,其为泛型,需要传入你自定义的ViewHolder。所以你也需要定义你的静态内部类,让其继承RecycleView.ViewHolder,并且RecycleView并没有相关itemClick点击事件,所以你需要在静态类中定义点击事件,具体如下所示:
public class CardViewAdapter extends RecyclerView.Adapter{ public CardViewAdapter(List 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的相关特性和深入理解,将会在下一篇介绍。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/12587.html
摘要:通过附加一个到子视图的添加,通过对的操作我们可以得到它的五种状态。关闭,高度可控属性默认为在用户直接拖动向上或向下的中间状态当被释放和沉降到其最终位置记录的状态展开时的状态默认情况下禁用和启用应用程序属性这使得用户可以向下滑动完全隐藏底部。 这是一个系列,我们将其命名为android最佳实践,如果你还没有看之前的文章: Android最佳实践(一) android最佳实践(二) and...
摘要:的权限问题确实给开发者带来了开发难度,那么如何降低难度呢,在此向大家介绍框架,如果你使用过,那么使用将会很简单,也很容易理解其原理,具体如何使用在此不介绍。你要做的事委托给生成的类详细的说明,以及使用指南和代码检视,可在之后的博文中讲解。 这是一个系列,我们将其命名为android最佳实践,如果你还没有看之前的文章: Android最佳实践(一) android最佳实践(二) andr...
摘要:大家都应该知道,当你在联系人中操作完,比如选择联系人完成后,你需要针对当前选择的进行第二次查询操作,这个时候,我们接收数据是重写方法。 这是一个系列,我们将其命名为android最佳实践,如果你还没有看之前的文章: Android最佳实践(一) android最佳实践(二) android最佳实践(三) android最佳实践(五) Android最佳实践(六)之扫描二维码模块 大家可...
摘要:这是一个系列,我们将其命名为最佳实践,如果你还没有看之前的文章最佳实践二最佳实践三最佳实践四最佳实践五最佳实践六之扫描二维码模块最佳实践感谢给的灵感,希望这次专题能认真的走下去,其他翻译会同步进行。 这是一个系列,我们将其命名为android最佳实践,如果你还没有看之前的文章: Android最佳实践(二) android最佳实践(三) android最佳实践(四) android最佳...
摘要:工厂模式该模块使用工厂模式,将实现和接口分离,同时为未来提供多样化的产品带来可能,用户可定制扫描二维码界面。 这是一个系列,我们将其命名为android最佳实践,如果你还没有看之前的文章: Android最佳实践(一) android最佳实践(二) android最佳实践(三) android最佳实践(四) android最佳实践(五) 上一节,我们编写了contact模块,极大的简化...
阅读 1133·2021-10-14 09:50
阅读 2304·2021-09-29 09:34
阅读 1373·2019-08-30 15:54
阅读 913·2019-08-30 11:22
阅读 2778·2019-08-30 10:50
阅读 1657·2019-08-29 18:39
阅读 2907·2019-08-29 13:07
阅读 1944·2019-08-28 17:54