首页 > 代码库 > Fragment
Fragment
1 ListView:是一个AdapterView:UI控件,可以用于展示一组数据(使用适配器)
适配器控件 : Spinner ListView
列表:每一行叫做item
setEmptyView(View);--》当ListView中没有数据展示,展示指定的view控件
2 适配器:Adapter:接口
BaseAdapter:抽象类(适配器的半成品:有4个抽象方法)
系统提供好的适配器:ArrayAdapter
SimpleAdapter
自定义适配器: 自定义类 继承BaseAdapter, 重写4个方法
getCount(int item)-->int ,item 的个数.就是listView要展示的item的总量
数据源.size(),length;
getItem(int position)-->Object,根据postion,获取对应item的对象。
数据源.get(position);
getItemId(int position)-->long,根据position,获取itme的id。
position
getView(int position,View convertView,ViewGroup parent)-->View
step1:先判断convertView是否为空
如果为空:
A通过布局填充器,将item的布局xml,转为view对象
B创建ViewHolder对象
C为viewholder对象的属性(就是子控
件)=convertView.findViewById(R.id.xxx);
D,convertView.setTag(viewhoder);
step2:不为空
viewhoder=convertView.getTag();
step3:根据postion获取数据源,设置到viewhoder的子控件上。
step4:返回convertView
3 监听器:
ListView:
onItemClickListener
onItemLongClickListener
Spinner:
onItemSelectedListener
4 ListView的优化
A:ListView中的属性:android:layout_height="固定值/match_parent",不要写
wrap_content,防止多次调用getView()方法。
B:ListView自身的优化机制:利用convertView:复用view
第一屏幕展示的每一个item,都是用布局填充器,转换xml-->view
当有item滚出,就存在view的复用。--->convertView
判断convertView是否为空:
为空:当前不存在可以复用的view对象。(第一屏幕)
view = layoutInflater.infalte(R.layout.xxx,null)
否则:存在复用-->convertView
view = convertView
C: 为了减少findViewById(),方法的调用次数,需要创建一个ViewHolder的内部类,用于将 view上的子控件,和view绑定到一起。
为了通过ViewHolder的属性,来保存当前的view的子控件。
Fragment