android分组
Ⅰ android listview 鍒嗙粍镄勬椂鍊 ViewHolder缂揿瓨镐庝箞锅氩憿锛
镒忔濇槸濡傛灉链夊氱峣tem甯冨眬镄勬椂鍊欐庝箞锅氱紦瀛樻槸钖э纻
鎴戣繖閲屾湁涓渚嫔瓙锛屾槸涓ょ嶅竷灞镄勶细
getItemViewType鍖哄垎涓涓嬶纴鍏跺疄鎴戣繖閲屽彧链夌涓涓鏄痶itle
Ⅱ android权限管理
从 Android 6.0 开始,按照是否需要动态申请分为 普通权限 和 特殊权限
特殊权限 需要程序运行时申请并通过之后才能使用,或者程序安装为系统应用或系统签名。
注意:
1、动态申请也需要在清单文件中配置(AndroidMenifest.xml)
2、权限是分组的,同一组的权限申请其中一个,同组的权限就全部都申请了
特殊权限共有 9 组:
9 组具体权限列表:
普通权限在清单文件配置(AndroidMenifest.xml)即可使用
(1)在 AndroidMenifest.xml 清单文件中申请
(2)单个申请
(2)批量申请
(3)回调处理
Ⅲ android listview样式设置,加分组
1. 万能适配器 具体可以参考http://www.imooc.com/learn/372
1). ViewHolder: 传统的写法我们一般是会把ViewHolder写在Adapter里面,这里把ViewHolder提取出来作为一个公共的类使扒漏用这样不用每个Adpater都去写一遍ViewHolder了,所以对于每个ViewHolder类我们要知道的对象有
private SparseArray<View> mViews = null;
private Context mContext = null;
private View mConvertView = null;
private int mPosition = -1;12341234
mViews 用来保存我们每个item布局里面的view对应的key是view的id,mContext 用来保存上下午,mConverView保存对应item的ConvertView,mPosition用来保存item对应的位置。
2). MobileBaseAdapter: 也做了稍微的优化,因为我们在写Adapter里面getView的时候很多动作都是重复的,所以对应重复的动作全部都单独提取出来提前写好了,在使用MobileBaseAdapter的时候只要实现public abstract void convert(ViewHolder viewHolder, T t); 就好了具体可以看下燃樱代码中的做法。用起来是非常简单的。
2. 具体分组的实现
我们先要知道BaseAdapter里面的getItemViewType()函数和getViewTypeCount()函数的作用。getViewTypeCount表示ListView 每个item会缓存几个复用对象,getItemViewType则是根据position判断这个这个item对应用哪个缓存的对象,换句话说比如getViewTypeCount返回的值是3,那么每个item可能就会有0,1,2三个缓存复用的对象,这个时候getItemViewType返回的是0,这样就会用0这个对象去复用。
这样我们在来看下MobileCategoryAdapter里面的代码。
1). 内部类Category 这个没什么东西包含一个BaseAdapter对象和一些必要的方法, 因为我们在MobileCategoryAdatper里面肯定是会有List对象的。
2). 内部类CategoryListClickListener 实现了ListView的OnItemClickListener。因为我们要ListView.setOnClickListener这个类的对象。
在这个类中我们会区分当前点击的皮此丛是title(点击的时候我们可能会展开和收缩该分组)还是item。然后把title(onTitleClick)和item(onItemClick)的点击的实现都暴露出去。
3). getViewTypeCount() 1+每个Category中Adpater的ViewType。加1可以想象是每个Category都有一个标题。看代码运行的效果图应该能看出来,我们上面的效果图相当于有3个ViewType。
4). getItemViewType() 根据每个position去获取ViewType。