首页 > 代码库 > 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