当前位置:天才代写 > tutorial > 安卓教程 > Android控件第3类——AdapterView

Android控件第3类——AdapterView

2021-02-26 14:07 星期五 所属: 安卓教程 浏览:24

 

  AdapterView这一类控制的较大 特性,在绝大部分的状况下,他们的数据信息都由Adapter的子类出示(有时候能够在控制的entries特性上立即设定表明的数据信息)。

  启用AdapterView的setAdapter(Adapter)将控制与数据信息关系。

 

一、简述

  AdapterView是一个抽象类,她承继了GroupView,因此 它是一个容器类。它有三个子类:AbsListView、AbsSpinner、AdapterViewAnimator,这三个子类也全是抽象类。与之相匹配的Adapter是一个插口,它包括2个插口:ListAdapter、SpinnerAdapter。AdapterViewAnimator的子类一般 用以滚动表明上一个、下一个控制。

  为AbsListView子类加上数据信息的情况下,应用setAdapter(ListAdapter);为AbsSpinner子类加上数据信息的情况下,应用setAdapter(SpinnerAdapter);为AdapterViewAnimator子类加上数据信息的情况下启用setAdapter(Adapter),换句话说,为AdapterViewAnimator子类给出的数据的情况下,既能够应用ListAdapter、还可以应用SpinnerAdapter。实际上,在具体的应用中,并不会有很大的各自。由于在具体应用中,一般 都是会应用BaseAdapter以及子类(ArrayAdapter、SimpleAdapter、CursorAdapter、ResourceCursorAdapter、SimpleCursorAdapter),而BaseAdapter完成了ListAdapter和SpinnerAdapter2个插口。

  必须留意的是ListView的子类ExpandableListView。一切正常的状况下,这一类应当启用setAdapter(ListAdapter)来关联数据。可是依据ExpandableListView展现数据信息的特别要求,setAdapter(ListAdapter)不可以符合要求,因此 这一方式将抛出异常;另外,此类出示了setAdapter(ExpandableListAdapter),用以关联数据。ExpandableListAdapter并沒有承继Adapter或ListAdapter,它沒有承继一切插口。它的完成类包含BaseExpandableListAdapter、SimpleExpandableListAdapter、CursorTreeAdapter、ResourceCursorTreeAdapter、SimpleCursorTreeAdapter,在其中,第一、2、5较为常见。

 

二、常见控制

1、AbsListView,承继自AdapterView,必须应用setAdapter(ListAdapter)关联数据

  android:choiceMode,设定AbsListView挑选个人行为,单项选择题/选取(none/singleChoice/multipleChoice/multipleChoiceModal)

  android:drawSelectorOnTop(setDrawSelectorOnTop(boolean)),为true,则选定的项会表明到最上边

  android:listSelector(setSelector(int)),特定被选定的目录项上绘图的Drawable

 

2、ListView,承继自AbsListView,必须应用setAdapter(ListAdapter)关联数据

  能够应用Activity ListView(自身加上ListView控制)

  还可以立即应用ListActivity,这一Activity内置ListView

  android:divider,目录项的分节符,能够是色调,还可以是Drawable

  android:dividerHeight,分节符高宽比

  android:entries,特定一个二维数组,用以标示要表明的数据信息

 

3、GridView,承继自AbsListView,必须应用setAdapter(ListAdapter)关联数据

  GridView与ListView类似。不同之处是ListView只表明一列,而GridView能够表明两列。假如GridView只设定了一列,就和ListView一样了。

  能够根据android:numColumns(setNumColumns(int))来设定要表明的行数。

  

4、AutoCompleteTextView,承继自TextView,必须应用setAdapter(ListAdapter)关联数据

  沒有承继AdapterView以及子类,它也应用setAdapter为其给出的数据,因此 放到这儿。

  它的setAdapter方法的申明以下:public <T extends ListAdapter & Filterable> void setAdapter(T adapter) {……}

 

5、MultiAutoCompleteTextView,承继自AutoCompleteTextView,必须应用setAdapter(ListAdapter)关联数据

  与AutoCompleteTextView基础类似。仅仅MultiAutoCompleteTextView能够数次键入,而且数次配对Adapter中的信息内容。2次键入中间用setTokenizer(MultiAutoCompleteTextView.Tokenizer)来设定。而MultiAutoCompleteTextView出示了一个Tokenizer——CommaTokenizer。这一Tokenizer表明分号。其书写为setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer())。

 

6、Spinner,承继自AbsSpinner,必须应用setAdapter(SpinnerAdapter)关联数据

  Spinner是出示客户挑选的列表框,类似下拉框框。

 

7、Gallery,承继自AbsSpinner,必须应用setAdapter(SpinnerAdapter)关联数据,早已不强烈推荐应用

  Spinner是一个竖直的,Gallery是一个水准的。

  Spinner出示客户挑选,Gallery一般 用以查询,能够根据左右滚动查询上一个、下一个目录项。

  如今早已不强烈推荐应用Gallery,只是应用HorizontalScrollView和ViewPager来替代。

 

8、AdapterViewAnimator,承继自AdapterView,必须应用setAdapter(Adapter)关联数据

  一次只有表明一个View(View由Adapter.getView()方式出示)

  根据showPrevious()和showNext()表明上一个和下一个View

  android:animateFirstView特性,表明第一个View的情况下是不是应用动漫

  android:inAnimator,android:outAnimator特性,表明和掩藏时应用的动漫

  android:loopViews属性,循环系统结束后是不是从第一个View从头开始循环系统

 

8、AdapterViewFlipper,承继自AdapterViewAnimator,必须应用setAdapter(Adapter)关联数据

  android:autoStart特性/startFlipping()方式逐渐全屏播放,stopFlipping()方式终止全屏播放。

  android:flipInterval特性/setFlipInterval(int)方式设定全屏播放的事件间隔。

 

9、StackView,承继自AdapterViewAnimator,必须应用setAdapter(Adapter)关联数据

  与AdapterViewFilpper不一样的是,StackView以层叠的方法表明好几个目录项

  拉走StackView顶部的View,可能表明下一个View;将上一个View拖入StackView,则那一个View便会表明。

  还可以根据showPrevious、showNext表明上一个、下一个

 

10、ExpandableListView,承继自ListView,必须应用setAdapter(ExpandableListAdapter)关联数据

  它是一个多层面的ListView,有组和同组组员二种。

  android:childDivider特性,组内各子目录项中间的隔开条;android:divider特性,组中间的隔开条。

  android:childIndicator特性,子目录项边上的Drawable目标;android:groupIndicator,组目录项边上的Drawable目标。

  有两个setAdapter,在其中一个是承继自ListView的setAdapter(ListAdapter),为了更好地避免 应用这一方式,这一方式抛出异常。

  常见的ExpandableListAdapter的子类包含:BaseExpandableListAdapter、SimpleExpandableListAdapter、CursorTreeAdapter、ResourceCursorTree、SimpleCursorTreeAdapter。

  应用SimpleExpandableListAdapter时必须留意,相匹配的Layout只有设定TextView,由于Android在完成SimpleExpandableListAdapter的情况下,在bindView方式中,将控制强制转换成TextView,而getGroupView和getChildView2个方式都启用了bindView方式。而SimpleAdapter沒有那样的强制性类型转换,因此 能够在Layout上随意的加上控制。

  假如应用BaseExpandableListAdapter,必须完成其方式。较为关键的方式为:

    •   getGroupCount
    •   getGroupView
    •   getChildrenCount
    •   getChildView

  

 

三、Adapter以及子类

 

1、ArrayAdapter,承继自BaseAdapter

  new一个ArrayAdapter,一般 启用三个主要参数的构造方法:

    •   Context
    •   用以展现单独目录项的ResourceId
    •   List/二维数组目标做为参数传递到构造方法中。

 

2、SimpleAdapter,承继自BaseAdapter

  与ArrayAdapter相近,new一个SimpleAdapter,仅仅主要参数略繁杂。一共五个主要参数:

    •   Context
    •   一个用以存取数据的List<? extends Map<String,?>>
    •   用以展现单独目录项的ResourceId
    •   String[],用以与第2个主要参数中Map<String,?>中的String相匹配的字符串数组
    •   int[],表明的是控制id,与第三个主要参数和第四个主要参数相匹配。第三个主要参数能够是一个繁杂的控制组成,int二维数组中的每一项,相匹配着第三个主要参数中的一个控制的Id,另外也相匹配着第4个主要参数中的一个String字段名。表明第2个主要参数中的String字段名相匹配的数据信息,表明在第三个主要参数相匹配的控制上。

 

3、BaseAdapter,完成了ListAdapter和SpinnerAdapter

  BaseAdapter是一个抽象类,必须完成其方式。

  最重要的,必须完成其getView方式:public view getView(int position, View convertView, ViewGroup parent)

  在getView方式的主要参数中,最特别注意的是第2个主要参数,convertView。假如必须表明的项比较多,一屏不显示,便会表明下拉列表。这一主要参数意味着的便是在下拉列表翻转的情况下,刚被掩藏起來的那一个View。这一View由于早已掩藏起来了,我们可以运用这一View来展现刚表明出去的这一View,而不是再次建立一个View。那样就巨大的减少了运行内存和時间的耗费。

 

4、BaseExpandableListAdapter

  它是一个抽象方法,它的子类中较为常见的包含:SimpleExpandableListAdapter、SimpleCursorTreeAdapter

  假如在编码中应用BaseExpandableListAdapter,要完成其方式,较为关键的方式有:

    •   public int getChildrenCount(int groupPosition)
    •   public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent)
    •   public int getGroupCount()
    •   public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent)

 

5、SimpleExpandableListAdapter

  它的主要参数以下:

    •    context  与SimpleExpandableListAdapter关系的ExpandableListView的前后文。
    •      groupData  一个Maps目录(List)。结合中的每一个词典项与折叠式目录中的每一个组原素一致。词典项出示了组原素包括的全部数据信息,并包括全部在”groupFrom”中特定的纪录。
    •   expandedGroupLayout   界定组进行时的View的XML資源合理布局。该合理布局文档理应最少包含全部在groupTo中常界定的View。(即groupTo中的View id二维数组务必都是在该合理布局文档中寻找)
    •   collapasedGroupLayout   界定组伸缩时的View的XML資源合理布局。该合理布局文档理应最少包含全部在groupTo中常界定的View。(即groupTo中的View id二维数组务必都是在该合理布局文档中寻找)
    •      groupFrom      一个键值目录。相匹配与组关联的Map中的键值。
    •    grouptTo   组View理应表明groupFrom主要参数中的全部列数据信息。这种数据信息理应都用TextView来表明。目录中的前N个View过去N个groupFrom主要参数得到列原素的数据信息。
    •      childData        一个Map目录的目录。外界目录中的每一个实体线相匹配一个组(依照组的部位序号)。在內部目录的每一个实体线相匹配某一组的子原素(依照子原素的部位序号)。该Map相匹配了子原素的数据信息。(依照childFrom二维数组中的值序号)。该Map包括了每一个子原素的数据信息,而且理应包含全部在childFrom中特定的实体线。
    •      childLayout      表明子原素的資源文档。该資源文档界定了怎样表明子原素。合理布局文档最少应当包含全部在childTo中界定的View。(即childTo中的view id二维数组务必都是在该合理布局文档中寻找)
    •    lastChildLayout 界定每一组中最后一个子原素的View資源合理布局状况。该合理布局文档理应最少包含全部在childTo中常界定的View。(即childTo中的View id二维数组务必都是在该合理布局文档中寻找)
    •    childFrom       界定表明子原素的字段名。该字段名与childData中的子原素特性(词典键值)相匹配。
    •      childTo       子View理应表明childFrom主要参数中的全部列数据信息。这种数据信息理应都用TextView来表明。目录中的前N个View过去N个childFrom主要参数得到列原素的数据信息。
 

    关键字:

天才代写-代写联系方式