Android常用Adapter用例(二)

来自:http://blog.csdn.net/zhengzhihao1/ 转载请标明出处。

Android适配器之-----SimpleAdapter

结构

继承关系

public interface SpinnerAdapter extends Adapter

        

         java.lang.Object

                  android.widget.BaseAdapter

android.widget. SpinnerAdapter

类概述

这是一个简单的适配器,可以将静态数据映射到XML文件中定义好的视图。你可以指定数据支持的列表如ArrayList组成的Map。在ArrayList中的每个条目对应List中的一行。Maps包含每行数据。你可以指定一个定义了被用于显示行的视图XML文件,通过关键字映射到指定的视图。绑定数据到视图分两个阶段,首先,如果一个SimpleAdapter.ViewBinder是有效的,setViewValue(android.view.View, Object, String)将被调用。如果返回值是真,绑定完成了。如果返回值为假,下面的视图将按以下顺序去处理:

l  一个实现了Checkable的视图(例如CheckBox),期望绑定值是一个布尔类型。

l  TextView期望绑定值是一个字符串类型,通过调用setViewText(TextView, String)绑定。

l  ImageView期望绑定值是一个资源id或者一个字符串,通过调用setViewImage(ImageView, int) 或setViewImage(ImageView, String)。

如果没有一个合适的绑定发生将会抛出IllegalStateException。

构造函数

public SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)

构造函数

参数

       context   关联SimpleAdapter运行着的视图的上下文。

data        一个Map的列表。在列表中的每个条目对应列表中的一行,应该包含所有在from中指定的条目

resource              一个定义列表项目的视图布局的资源唯一标识。布局文件将至少应包含哪些在to中定义了的名称。

from       一个将被添加到Map上关联每一个项目的列名称的列表

to    应该在参数from显示列的视图。这些应该全是TextView。在列表中最初的N视图是从参数from中最初的N列获取的值。

公共方法

public int getCount()

获取数据集中记录总行数

public View getDropDownView(int position, View convertView, ViewGroup parent)

获得一个在指定位置上显示下拉弹出数据的视图。

参数

position         想得到项目视图的索引

convertView  如果可能旧有的视图重新使用。注解:在使用之前应该检查这个视图不是空的并且类型合适。如果转换视图显示正确的数据是不可能的,这个方法能够创建一个新的视图

parent           视图最终将依附的父对象

返回值

一个对应指定位置的数据的视图。

public Filter getFilter()

返回一个可以通过一种过滤模式来约束数据的过滤器。

这个方法通常被Adapter类实现。

返回值

一个用于约束数据的过滤器

public abstract Object getItem(int position)

获取数据集中指定位置上的数据项目

参数

position  在adapter中我们想得到项目的位置。

返回值

指定位置上的数据。

public abstract long getItemId(int position)

获取数据集中指定位置上的行ID。

参数

position  在adapter中我们想得到的行ID的项目的位置。

返回值

指定位置上的数据。

public abstract View getView(int position, View convertView, ViewGroup parent)

获取一个显示数据集中指定位置数据段视图。可以手动创建视图,或者从XML设计文件填充。当视图从XML设计文件填充时,父视图(如GridView,ListView等)将接受默认的设计参数,除非使用inflate(int, android.view.ViewGroup, boolean)去指定一个根视图和防止依附于根视图。

参数

       position  我们想要的在adapter中的数据项目的位置

convertView  如果可能旧有的视图重新使用。注解:在使用之前应该检查这个视图不是空的并且类型合适。如果转换视图显示正确的数据是不可能的,这个方法能够创建一个新的视图

parent    视图最终将依附的父对象。

返回值

一个在指定位置上相应的数据的视图。

public SimpleAdapter.ViewBinder getViewBinder()

返回被用来绑定数据到视图的SimpleAdapter.ViewBinder

返回值

一个ViewBinder ,如果binder不存在则返回null

参见

setViewBinder(android.widget.SimpleAdapter.ViewBinder)

public void setDropDownViewResource(int resource)

设置创建下拉视图的布局资源

参数

       resource       定义下拉视图的布局资源

参见

getDropDownView(int, android.view.View, android.view.ViewGroup)

public void setViewBinder(SimpleAdapter.ViewBinder viewBinder)

设置binder用于绑定数据到视图

参数

       viewBinder    用于绑定数据到视图的binder可以设置为null,可用于删除存在的binder

参见

getViewBinder()

public void setViewImage(ImageView v, int value)

调用bindView去给ImageView设置图像,但只有当ViewBinder不存在或者如果存在的ViewBinder无法处理绑定到一个ImageView时才调用。如果提供的数据是一个整形时,setViewImage(ImageView, String)方法将被本方法替代

参数
              v     接收图像的ImageView

value      从数据集获取数据到值

参见

setViewImage(ImageView, String)

public void setViewImage(ImageView v, String value)

调用bindView去给ImageView设置图像,但只有当ViewBinder不存在或者如果存在的ViewBinder无法处理绑定到一个ImageView时才调用。默认的,这个值被作为一个图像资源来对待。如果这个值作为一个图像的Uri来使用。如果提供的数据不是一个整形时,setViewImage(ImageView, int)方法将被本方法替代

参数

       v     接收图像的ImageView

value      从数据集获取数据到值

参见

setViewImage(ImageView, int)

public void setViewText(TextView v, String text)

调用bindView去给TextView设置文本,但只有当ViewBinder不存在或者如果存在的ViewBinder无法处理绑定到一个TextView时才调用

参数

       v     将接收文本的TextView

text 被设置到TextView的文本

补充

文章精选

简约而不简单——Android SimpleAdapter

android listview组件之ArrayAdapter,SimpleAdapter

Android用simpleAdapter来直接显示BMP图片(有ViewBinder用法)

示例代码

                  

         private ListView lv;

private List<Map<String,String>> data;

private SimpleAdapter sAdapter;

lv = (ListView)findViewById(R.id.listview);    

data = new ArrayList<Map<String, Object>>();

for (int i = 0; i < 10; i++) {

            Map<String, Object> map = new HashMap<String, Object>();

            map.put("title""APPLE");

            map.put("content""can eat");

map.put("check"true);

map.put("check1", "true");

            map.put("image", R.drawable.icon);

data.add(map);

}

sAdapter = new SimpleAdapter(getApplicationContext(),

data,

               R.layout.item,

new String[]{"title","content","check","check1","image"},

newint[]{R.id.title,R.id.content,R.id.check,R.id.check1, R.id.image});

lv.setAdapter(sAdapter);

Android适配器之---SimpleCursorAdapter

结构

继承关系

public class SimpleCusrorAdapter extends ResourceCusorAdpater

java.lang.Object

android.widget.BaseAdapter

         android.widget.CursorAdapter

                            android.widget.ResourceCusorAdapter

                                     android.widget.SimpleCusorAdapter

类概述

这是一个用起来很方便的适配器类,它主要将Cursor与TexiView或ImageView进行映射。比如,你想设定要展示三列,那么当做好绑定之后,视图就会展示你设定好的那些列;当然了,视图的外观是定义在XML文件里面的,你只需用这个类与视图做好绑定就可以了。与视图绑定有两个阶段。第一阶段:如果SimpleCursorAdapter.ViewBinder可用,将会调用setViewValue(android.view.View, android.database.Cursor, int)方法。该方法返回true就说明绑定成功,否则返回false ,这就到了第二阶段,SimpleCursorAdapter内部开始自行绑定,过程是这样的,若绑定到TextView上,调用setViewText();若绑定到ImageView上,调用setViewImage();如果视图不是TextView或ImageView则抛出IllegalStateException异常。当使用带有过滤器的适配器时,例如,在APIDemo中有个AutoCompleteTextView的例子,我们能使用SimpleCursorAdapter.CursorToStringConverter和接口         FilterQueryProvider来控制过滤过程。更多信息请参考convertToString(android.database.Cursor) 和runQueryOnBackgroundThread(CharSequence)

        

内部类

public interface SimpleCusorAdapter.ViewBinder        

         这个内部接口可以在外部通过SimpleCursorAdapter.ViewBinder的方式进行Cursor     与View的绑定。

public interface SimpleCusorAdapter.CursorToStringConverter

         这个内部接口可以在外部通过SimpleCursorAdapter.CursorToStringConverter的方式   定义怎样将Cursor转换成字符串。

构造函数

public SimpleCursorAdapter (Context context, int layout, Cursor c, String[] from, int[] to)

         构造函数启动自动重新查询(auto-requery)。

         这个构造器已被标记为弃用(@Deprecated) 

该方法不推荐使用,Cursor查询操作是执行在应用程序的UI线程当中,那么会导致无响应的情况。另一种方式是使用LoaderManagerCursorLoader来进行。

         (译者注:3.0已不推荐使用该构造方法)

                   参数

                            context  应用程序上下文,具体来说就是ListView所在的上下文当中。

layout       布局文件的资源定位标识符,也就是说标识了ListView中的item。那么这个布局文件至少包含了参数“to”中的传进来值。

                            c                 数据库游标,如果游标不可用则为null。

from                   列名字列表,表示着你要绑定到UI上的列。如果游标不可用则为null。

to               展示参数“from”中的列,也就是说ListView中的视图显示的是参数“from”的列值,这些视图应该都是TextView。如果游标不可用则为null。

public SimpleCursorAdapter (Context context, int layout, Cursor c, String[] from, int[]      to,int flags)     

         该适配器类标准的构造函数。(译者注:3.0新添的构造方法)

                   参数

                            context  应用程序上下文,具体来说就是ListView所在的上下文当中。

layout       布局文件的资源定位标识符,也就是说标识了ListView中的item。那么这个布局文件至少包含了参数“to”中的传进来值。

                            c                数据库游标,如果游标不可用则为null。

from                   列名字列表,表示着你要绑定到UI上的列。如果游标不可用则为null。

to               展示参数“from”中的列,也就是说ListView中的视图显示的是参数“from”的列值,这些视图应该都是TextView。如果游标不可用则为null。

flags                   这个标志用来决定该适配器的行为。(译者注:Android3.0推荐我们传递CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER。设置标志用来添加一个监听器,监听着参数cursor的数据是否有更变。)

公共方法

public void bindView (View view, Context context, Cursor cursor)

         绑定所有构造函数中的参数from(字段名)一一绑定到参数to(视图资源ID)。与视图绑定有两个阶段。第一阶段:如果SimpleCursorAdapter.ViewBinder可用,将会调用setViewValue(android.view.View, android.database.Cursor, int)方法。该方法返回true就说明绑定成功,否则返回false ,这就到了第二阶段,SimpleCursorAdapter内部开始自行绑定,过程是这样的,若绑定到TextView上,调用setViewText();若绑定到ImageView上,调用setViewImage();如果视图不是TextView或ImageView则抛出IllegalStateException异常。

参数

                            view                 已存在的视图(View)对象, 也就是早先new出来的。

                            context           应用程序上下文。

                            cursor               数据库游标。该游标已经移动到指定位置上。

                   异常

                            IllegalStateException 如果绑定的视图中不是TextView或是ImageView则会                           抛出这个异常。

                   参见

                   bindView(android.view.View, android.content.Context, android.database.Cursor)

                   getViewBinder()

                   setViewBinder(android.widget.SimpleCursorAdapter.ViewBinder)

         setViewImage(ImageView, String)

                            setViewText(TextView, String)

public void changeCursorAndColumns(Cursor c, String[] from, int[] to)

         同时更改Cursor与View的映射关系。

参数

                            c                 数据库游标,如果游标不可用则为null。 

from                   列名字列表,表示着你要绑定到UI上的列。如果游标不可用则为null。

to               展示参数“from”中的列,也就是说ListView中的视图显示的是参数“from”的列值,这些视图应该都是TextView。如果游标不可用则为null。

                           

public CharSequence convertToString (Cursor cursor)

通过CursorToStringConverter接口实现并返回一个CharSequence  类型的值,以表示指定的Cursor。如果没有设置CursorToStringConverter,那么就会用另外的方式进行转换。如果列数为-1,或者 cursor为null返回空串,否则返回cursor.toString()。

                   参数

                            cursor               转换为CharSequence的数据库游标。

         返回值

                   返回一个不为null的CharSequence类型来表示参数cursor。

public SimpleCursorAdapter.CursorToStringConverter getCursorToStringConverter ()

         返回自定义的SimpleCursorAdapter.CursorToStringConverter的实现。

返回值

                            如果没有设置SimpleCursorAdapter.CursorToStringConverter,则为null。

参考

         setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter)

         getStringConversionColumn()

         setStringConversionColumn(int)

         convertToString(android.database.Cursor)

public int getStringConversionColumn ()

         返回转换成String类型的列位置。

返回值

                            返回列位置,如果没有则返回-1。

参考

                            convertToString(android.database.Cursor)

                            setStringConversionColumn(int)

         setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter)

                            getCursorToStringConverter()

public SimpleCursorAdapter.ViewBinder getViewBinder ()

返回SimpleCursorAdapter.ViewBinder引用,这个ViewBinder用来将数据绑定到视图上的。

返回值

                            如果ViewBinder不存在,则返回null。

参考

         bindView(android.view.View, android.content.Context, android.database.Cursor)

         setViewBinder(android.widget.SimpleCursorAdapter.ViewBinder)

public void setCursorToStringConverter (SimpleCursorAdapter.CursorToStringConverter cursorToStringConverter)

设置String转换器。

                   参数

                            cursorToStringConverter  String转换器,设置为null就意味着移除。

                   参考

         setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter)

         getStringConversionColumn()

         setStringConversionColumn(int)

         convertToString(android.database.Cursor)

public void setStringConversionColumn (int stringConversionColumn)

设置Cursor中的列要转换成String类型的位置。不过仅当未设置CursorToStringConverter时,这个列才会进行默认转换。

                   参数

                            stringConversionColumn  列位置,如果参数为-1,则使用默认转换机制。

                   参考

         convertToString(android.database.Cursor)

         getStringConversionColumn()

         setCursorToStringConverter(android.widget.SimpleCursorAdapter.CursorToStringConverter)

         getCursorToStringConverter()

public void setViewBinder (SimpleCursorAdapter.ViewBinder viewBinder)

设置视图绑定器。

                   参数

                            viewBinder  视图绑定器,可用为null删除现有的绑定器。

                   参考

         bindView(android.view.View, android.content.Context, android.database.Cursor)

         getViewBinder()

public void setViewImage (ImageView v, String value)

仅当ViewBinder不存在或是当ViewBinder不为ImageView绑定时(也就是setViewValue()返回false),则这个方法会被bindView()调用,以便为ImageView设置图片。默认情况下,参数value作为图片资源ID来看待,否则,会视为图片的Uri。         另外还可以通过过滤器来获得更灵活的设置。

                   参数

                            v                 图片控件引用

                            value         图片资源ID,是从Cursor获取到的。

public void setViewText (TextView v, String text)

仅当ViewBinder不存在或是当ViewBinder不为TextView绑定时(也就是setViewValue()返回false),则这个方法会被bindView()调用,以便为TextView设置文本。可用重写适配器从数据库中检索过滤字符串。

                   参数

                            v                 文本控件引用

                            value         为文本控件设置的文本信息(译者注:是从Cursor获取到的)。

public Cursor swapCursor (Cursor c)

交换两个Cursor的列以及它们的数据,并最终返回的还是旧的Cursor。不同于changeCursor(Cursor)的是,旧的Cursor非但不会关闭,而且还会返回出去。(译者注:       3.0新添的方法)

                   参数

                            c  新的Cursor对象。

                   返回值

返回旧的Cursor引用,如果参数cursor不可用,则返回null。如果参数cursor与原来的Cursor引用相同,那么也返回null。

补充

         文章精选

                   ArrayAdapter和SimpleCursorAdapter例子

                   Android API : SimpleCursorAdapter()

Android适配器之-----SimpleCursorTreeAdapter

结构

继承关系

public abstract class SimpleCusrorTreeAdapter extends     

                                            ResourceCusorTreeAdpater

java.lang.Object

android.widget.BaseExpandableListAdapter

         android.widget.CursorTreeAdapter

                            android.widget.ResourceCusorTreeAdapter

                                     android.widget.SimpleCursorTreeAdapter

类概述

这是一个用起来很方便的适配器类,它主要将Cursor与在XML文件中定义的TextView或ImageView进行映射。比如,你想设定要展示三列,那么当做好绑定之后,视图就会展示你设定好的那些列;当然了,视图的外观是定义在XML文件里面的,你只需用这个类与视图做好绑定就可以了。(译者注:Android推荐我们尽可能的将组视图和子视图分离开,也就是说不要把整体定义在一个布局文件当中。)与视图绑定有两个阶段。第一阶段:如果使用SimpleCursorTreeAdapter.ViewBinder时,那么就会调用setViewValue(android.view.View, android.database.Cursor, int)方法。该方法返回true就说明绑定成功,否则返回false,这就到了第二阶段,SimpleCursorAdapter内部开始自行绑定,过程是这样的,若绑定到TextView上,调用setViewText(TextView, String);若绑定到ImageView上,调用setViewImage(ImageView, String),如果视图不是TextView或ImageView则抛出IllegalStateException异常。

内部类

public interface SimpleCursorTreeAdapter.ViewBinder

         这个内部接口可以在外部通过SimpleCursorTreeAdapter.ViewBinder的方式进行 Cursor与View的绑定。

构造函数

public SimpleCursorTreeAdapter (Context context, Cursor cursor, int collapsedGroupLayout, int expandedGroupLayout, String[] groupFrom, int[] groupTo, int childLayout, int lastChildLayout, String[] childFrom, int[] childTo)

构造函数。

                   参数

                            context    上下文,多指ExpandableListView的上下文

                            cursor       数据库游标

collapsedGroupLayout     布局资源文件标识ID,其定义的是收缩时的ExpandableListView布局样式,并且内部至少要包含参数“groupTo”中指定的视图ID。

expandedGroupLayout    布局资源文件标识ID,其定义的是展开时的ExpandableListView布局样式,并且内部至少要包含参数“groupTo”中指定的视图ID。

                            groupFrom       列名列表,显示ExpandableListView的组节点。

groupTo             展示参数“groupFrom”中的列,也就是说ExpandableListView中的视图显示的是参数 “groupFrom”的列值,它们应该都是TextView或是ImageView。

childLayout       布局资源文件标识ID,其定义的是子视图的布局样式 (不包括最后一个子视图),内部至少要包含参数 “childTo”中指定的视图ID。lastChildLayout布局资源文件标识ID,其定义的是最后一个子视图的布局样式,内部至少要包含参数“childTo”中指定的视图ID。

lastChildLayout        布局资源文件标识ID,其定义的是最后一个子视图的布局样式,内部至少要包含参数“childTo”中指定的视图ID。lastChildLayout布局资源文件标识ID,其定义的是最后一个子视图的布局样式,内部至少要包含参数“childTo”中指定的视图ID。

                            childFrom          列名列表,显示ExpandableListView的子节点。

childTo               展示参数“childFrom ”中的列,也就是说ExpandableListView中的视图显示的是参数 “childFrom  ”的列值,它们应该都是TextView或是ImageView。

public SimpleCursorTreeAdapter (Context context, Cursor cursor, int collapsedGroupLayout, int expandedGroupLayout, String[] groupFrom, int[] groupTo, int childLayout, String[] childFrom, int[] childTo)

构造函数。(译者注:该构造函数只是少了一个参数lastChildLayout)

         参数

context    上下文,多指ExpandableListView的上下文

                            cursor       数据库游标

collapsedGroupLayout     布局资源文件标识ID,其定义的是收缩时的ExpandableListView布局样式,并且内部至少要包含参数“groupTo”中指定的视图ID。

expandedGroupLayout    布局资源文件标识ID,其定义的是展开时的ExpandableListView布局样式,并且内部至少要包含参数“groupTo”中指定的视图ID。

                            groupFrom       列名列表,显示ExpandableListView的组节点。

groupTo             展示参数“groupFrom”中的列,也就是说ExpandableListView中的视图显示的是参数 “groupFrom”的列值,它们应该都是TextView或是ImageView。

childLayout       布局资源文件标识ID,其定义的是子视图的布局样式 (不包括最后一个子视图),内部至少要包含参数 “childTo”中指定的视图ID。lastChildLayout布局资源文件标识ID,其定义的是最后一个子视图的布局样式,内部至少要包含参数“childTo”中指定的视图ID。

childFrom          列名列表,显示ExpandableListView的子节点。

childTo               展示参数“childFrom ”中的列,也就是说ExpandableListView中的视图显示的是参数 “childFrom  ”的列值,它们应该都是TextView或是ImageView。

public SimpleCursorTreeAdapter (Context context, Cursor cursor, int groupLayout, String[] groupFrom, int[] groupTo, int childLayout, String[] childFrom, int[] childTo)

构造函数。

         参数

context    上下文,多指ExpandableListView的上下文

                            cursor       数据库游标

                   groupLayout  显示组元素的资源文件。该资源文件定义了如何显示组元素。该布局文件必须至少包括groupTo中所定义的View。(即groupTo中的View id数组必须都在该布局文件中找到)

                            groupFrom       列名列表,显示ExpandableListView的组节点。

groupTo             展示参数“groupFrom”中的列,也就是说ExpandableListView中的视图显示的是参数 “groupFrom”的列值,它们应该都是TextView或是ImageView。

childLayout       布局资源文件标识ID,其定义的是子视图的布局样式 (不包括最后一个子视图),内部至少要包含参数 “childTo”中指定的视图ID。lastChildLayout布局资源文件标识ID,其定义的是最后一个子视图的布局样式,内部至少要包含参数“childTo”中指定的视图ID。

childFrom          列名列表,显示ExpandableListView的子节点。

childTo               展示参数“childFrom ”中的列,也就是说ExpandableListView中的视图显示的是参数 “childFrom  ”的列值,它们应该都是TextView或是ImageView。

公共方法

public SimpleCursorAdapter.ViewBinder getViewBinder ()

         返回SimpleCursorTreeAdapter.ViewBinder引用,这个ViewBinder用来将数据绑定到 视图上的。

返回值

                            如果ViewBinder不存在,则返回null。

参考

         setViewBinder(android.widget.SimpleCursorTreeAdapter.ViewBinder)

public void setViewBinder (SimpleCursorTreeAdapter.ViewBinder viewBinder)

.        设置视图绑定器。

                   参数

                            viewBinder  视图绑定器。可以设置为null来删除已经存在的绑定器。

                   参考

         getViewBinder()

public void setViewText (TextView v, String text)

         仅当ViewBinder不存在或是当ViewBinder不为TextView绑定时(也就是setViewValue()返回false),则这个方法会被bindView()调用,以便为TextView设置文本。可重写适配器从数据库中检索过滤字符串。

                   参数

                            v          文本控件引用

                            value      为文本控件设置的文本信息(译者注:是从Cursor获取到的)。

受保护方法

protected void bindChildView (View view, Context context, Cursor cursor, boolean isExpanded)

         通过参数cursor将数据绑定到已有的子视图上。。

                   参数

                            view                 已有视图,返回之前调用newChildView创建的视图。

                            context           应用程序上下文

                            cursor             用于获取数据的Coursor。Coursor已经移到正确的位置。

                            isLastChild   子元素是否处于组中的最后一个

protected void bindGroupView (View view, Context context, Cursor cursor, boolean isExpanded)

         通过参数cursor将数据绑定到已有组视图上。

                   参数                           

                            view                 已有组视图,返回之前调用newGroupView创建的视图。

                            context           应用程序上下文

                            cursor             用于获取数据的Coursor。Coursor已经移到正确的位置。

                            isExpanded   组视图是否呈展开状态

protected void setViewImage (ImageView v, String value)

这个方法会被bindView()调用,以便为ImageView设置图片。默认情况下,参数value作为图片资源ID来看待,否则会视为图片的Uri。   另外还可以通过过滤器来获得更灵活的设置。

                   参数

                            v          图片控件引用

                            value  图片资源ID,是从Cursor获取到的。

补充

         文章精选

                   android播放器(music player)源码分析2

Android适配器之-----SimpleExpandableListAdapter

结构

继承关系

public abstract class SimpleExpandableListAdapter extends BaseExpandableListAdapter

java.lang.Object

android.widget.BaseExpandableListAdapter

         android.widget.SimpleExpandableListAdapter

类概述

一个使用Map存储组元素和子元素的静态数据,使用XML资源文件定义组元素和子元素View如何显示的简单适配器。你可以区分指定组元素返回的数据是List<Map>类型。在ArrayList中的每个实体对应ExpandalbeList中的一个组。实体中的Map列表包含了组下的每行数据。你也可以指定一个XML文件来定义用于在组元素的View的显示。此时Map中的键值将与指定的View(XML中定义的view id)对应起来。子元素的处理情况类似。注意当可折叠的深度若不只1层,返回的数据将被指定为List类型。首个List对应子元素中所代表的组,第二个List对应孙子元素在子元素组中的位置。Map亦将支持这样的特殊元素。(子元素嵌套组元素的情况)

(译者注:ExpandableList支持深度大于1的情况。在andorid自带的ApiDomos的例子中有这个的代码:App/View/ExpandableList3)。

构造函数

publicSimpleExpandableListAdapter(Contextcontext,List<? extends Map<String, ?>> groupData, int groupLayout,String[]groupFrom, int[] groupTo,List<? extends List<? extends Map<String, ?>>> childData, int childLayout,String[]childFrom, int[] childTo)

构造函数

参数

                   context        与SimpleExpandableListAdapter关联的ExpandableListView的上下文。

                   groupData     一个Maps列表(List)。集合中的每个字典项与可折叠列表中的每个组元素一致。字典项提供了组元素包含的所有数据,并包含所有在"groupFrom"中指定的记录。

                   groupLayout   显示组元素的资源文件。该资源文件定义了如何显示组元素。该布局文件必须至少包括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数组必须都在该布局文件中找到)

                   childFrom        定义显示子元素的列名。该列名与childData中的子元素属性(字典键值)对应。

                   childTo      子View应当显示childFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个childFrom参数获得列元素的数据。

publicSimpleExpandableListAdapter(Contextcontext,List<? extends Map<String, ?>> groupData, int expandedGroupLayout, int collapsedGroupLayout,String[]groupFrom, int[] groupTo,List<? extends List<? extends Map<String, ?>>> childData, int childLayout,String[]childFrom, int[] childTo)

构造函数。

参数

                   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数组必须都在该布局文件中找到)

                   childFrom        定义显示子元素的列名。该列名与childData中的子元素属性(字典键值)对应。

                   childTo      子View应当显示childFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个childFrom参数获得列元素的数据。

publicSimpleExpandableListAdapter(Contextcontext,List<? extends Map<String, ?>> groupData, int expandedGroupLayout, int collapsedGroupLayout,String[]groupFrom, int[] groupTo,List<? extends List<? extends Map<String, ?>>> childData, int childLayout, int lastChildLayout,String[]childFrom, int[] childTo)

构造函数。

参数

                   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参数获得列元素的数据。

公共方法

publicObjectgetChild(int groupPosition, int childPosition)

public long getChildId (int groupPosition, int childPosition)

(译者注:获取与在给定组给予孩子相关的数据。)

publicView getChildView (int groupPosition, int childPosition, boolean isLastChild,ViewconvertView,ViewGroupparent)

(译者注:获取子项)

public int getChildrenCount (int groupPosition)

(译者注:返回在指定GroupChild数目。)

publicObject getGroup (int groupPosition)

public int getGroupCount ()

(译者注:返回Group的总数目。)

public long getGroupId (int groupPosition)

publicView getGroupView (int groupPosition, boolean isExpanded,ViewconvertView,ViewGroupparent)

(译者注:获取父项)

public boolean hasStableIds ()

public boolean isChildSelectable (int groupPosition, int childPosition)

(译者注:是否child获得焦点

publicView newChildView (boolean isLastChild,ViewGroupparent)

新建一个子元素View

        参数

            isLastChild   该child是否是组中的最后一个元素

            parent       新的View的最终父亲。

        返回

            新的子元素View对象。

publicViewnewGroupView(boolean isExpanded,ViewGroupparent)

新建一个组元素View。

        参数

            isExpanded 该组元素是否当前处于折叠状态

            parent   新View的最终父亲。

        返回

            新的组元素View对象。

补充

    文章精选

        ExpandableListActivity和SimpleExpandableListAdapter的使用方法

        Expandable lists[blogspot]

示例代码:

        List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();

        List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();

for (int i = 0; i < 20; i++) {

            Map<String, String> curGroupMap = new HashMap<String, String>();

            groupData.add(curGroupMap);

            curGroupMap.put(NAME"Group " + i);

            curGroupMap.put(IS_EVEN, (i % 2 == 0) ? "This group is even" : "This group is odd");

            List<Map<String, String>> children = new ArrayList<Map<String, String>>();

for (int j = 0; j < 15; j++) {

                Map<String, String> curChildMap = new HashMap<String, String>();

                children.add(curChildMap);

                curChildMap.put(NAME"Child " + j);

                curChildMap.put(IS_EVEN, (j % 2 == 0) ? "This child is even" : "This child is odd");

            }

            childData.add(children);

        }

// Set up our adapter

mAdapter = new SimpleExpandableListAdapter(

this,

                groupData,

                android.R.layout.simple_expandable_list_item_1,

new String[] { NAMEIS_EVEN },

newint[] { android.R.id.text1, android.R.id.text2 },

                childData,

                android.R.layout.simple_expandable_list_item_2,

new String[] { NAMEIS_EVEN },

newint[] { android.R.id.text1, android.R.id.text2 }

                );


你可能感兴趣的:(Adapter,Adapter)