Most visited

Recently visited

Added in API level 1

ExpandableListActivity

public class ExpandableListActivity
extends Activity implements View.OnCreateContextMenuListener, ExpandableListView.OnChildClickListener, ExpandableListView.OnGroupCollapseListener, ExpandableListView.OnGroupExpandListener

java.lang.Object
   ↳ android.content.Context
     ↳ android.content.ContextWrapper
       ↳ android.view.ContextThemeWrapper
         ↳ android.app.Activity
           ↳ android.app.ExpandableListActivity


一种活动,通过绑定到实现ExpandableListAdapter的数据源来显示项目的可扩展列表,并在用户选择项目时公开事件处理程序。

ExpandableListActivity拥有一个ExpandableListView对象,该对象可以绑定到提供两层数据的不同数据源(顶层是组,每个组下面是子组)。 以下各节将讨论绑定,屏幕布局和行布局。

屏幕布局

ExpandableListActivity具有默认布局,该布局由单个全屏幕居中可展开列表组成。 但是,如果您愿意,可以通过在onCreate()中使用setContentView()设置您自己的视图布局来自定义屏幕布局。 要做到这一点,你自己的视图必须包含一个ID为“@android:id / list”的ExpandableListView对象(如果它在代码中, list

或者,您的自定义视图可以包含任何类型的另一个视图对象,以便在列表视图为空时显示。 这个“空列表”通知器必须有一个ID“android:empty”。 请注意,当存在空白视图时,当没有要显示的数据时,可展开列表视图将被隐藏。

以下代码演示了一个(丑陋的)自定义屏幕布局。 它有一个带有绿色背景的列表,以及另一个红色的“无数据”消息。

 <?xml version="1.0" encoding="UTF-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:orientation="vertical"
         android:layout_width="match_parent" 
         android:layout_height="match_parent"
         android:paddingLeft="8dp"
         android:paddingRight="8dp">
 
     <ExpandableListView android:id="@id/android:list"
               android:layout_width="match_parent" 
               android:layout_height="match_parent"
               android:background="#00FF00"
               android:layout_weight="1"
               android:drawSelectorOnTop="false"/>
 
     <TextView android:id="@id/android:empty"
               android:layout_width="match_parent" 
               android:layout_height="match_parent"
               android:background="#FF0000"
               android:text="No data"/>
 </LinearLayout>
 

行布局

The ExpandableListAdapter set in the ExpandableListActivity via setListAdapter(ExpandableListAdapter) provides the Views for each row. This adapter has separate methods for providing the group Views and child Views. There are a couple provided ExpandableListAdapters that simplify use of adapters: SimpleCursorTreeAdapter and SimpleExpandableListAdapter.

通过这些,您可以为列表中的组和子项指定单独行的布局。 这些构造函数需要一些参数来指定组和子对象的布局资源。 它还具有其他参数,可让您指定将哪些数据字段与行布局资源中的哪个对象关联。 所述SimpleCursorTreeAdapter从取出数据Cursor S和SimpleExpandableListAdapter从获取数据List S的Map秒。

Android提供了一些标准的行布局资源。 它们位于R.layout类中,并具有诸如simple_list_item_1,simple_list_item_2和two_line_list_item之类的名称。 以下布局XML是资源two_line_list_item的源代码,它为每个列表行显示两个数据字段,一个在另一个之上。

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:orientation="vertical">
 
     <TextView android:id="@+id/text1"
         android:textSize="16sp"
         android:textStyle="bold"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"/>
 
     <TextView android:id="@+id/text2"
         android:textSize="16sp"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"/>
 </LinearLayout>
 

您必须识别绑定到此布局中每个TextView对象的数据。 这个语法在下一节讨论。

绑定到数据

使用实现ExpandableListAdapter接口的类将ExpandableListActivity的ExpandableListView对象绑定到数据。 Android提供了两个标准的列表适配器: SimpleExpandableListAdapter静态数据(地图)以及SimpleCursorTreeAdapter的光标查询结果。

也可以看看:

Summary

Inherited constants

From class android.app.Activity
From class android.content.Context
From interface android.content.ComponentCallbacks2

Inherited fields

From class android.app.Activity

Public constructors

ExpandableListActivity()

Public methods

ExpandableListAdapter getExpandableListAdapter()

获取与此活动的ExpandableListView关联的ExpandableListAdapter。

ExpandableListView getExpandableListView()

获取活动的可扩展列表视图窗口小部件。

long getSelectedId()

获取当前选定的组或子项的ID。

long getSelectedPosition()

获取当前选定的组或孩子的位置(打包位置表示形式)。

boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id)

当点击一个孩子时覆盖这个接收回调。

void onContentChanged()

内容更改时更新屏幕状态(当前列表和其他视图)。

void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)

当长时间按下某个项目时,将其覆盖填充上下文菜单。

void onGroupCollapse(int groupPosition)

重写此组件用于在组合已折叠时接收回调。

void onGroupExpand(int groupPosition)

覆盖此组件,以便在组展开后接收回调。

void setListAdapter(ExpandableListAdapter adapter)

为可扩展列表提供适配器。

boolean setSelectedChild(int groupPosition, int childPosition, boolean shouldExpandGroup)

将选择设置为指定的子项。

void setSelectedGroup(int groupPosition)

将选择设置为指定的组。

Protected methods

void onRestoreInstanceState(Bundle state)

确保在Activity恢复所有视图状态之前已创建可展开列表视图。

Inherited methods

From class android.app.Activity
From class android.view.ContextThemeWrapper
From class android.content.ContextWrapper
From class android.content.Context
From class java.lang.Object
From interface android.view.LayoutInflater.Factory2
From interface android.view.Window.Callback
From interface android.view.KeyEvent.Callback
From interface android.view.View.OnCreateContextMenuListener
From interface android.content.ComponentCallbacks2
From interface android.widget.ExpandableListView.OnChildClickListener
From interface android.widget.ExpandableListView.OnGroupCollapseListener
From interface android.widget.ExpandableListView.OnGroupExpandListener
From interface android.view.LayoutInflater.Factory
From interface android.content.ComponentCallbacks

Public constructors

ExpandableListActivity

Added in API level 1
ExpandableListActivity ()

Public methods

getExpandableListAdapter

Added in API level 1
ExpandableListAdapter getExpandableListAdapter ()

获取与此活动的ExpandableListView关联的ExpandableListAdapter。

Returns
ExpandableListAdapter

getExpandableListView

Added in API level 1
ExpandableListView getExpandableListView ()

获取活动的可扩展列表视图窗口小部件。 这可以用来获取选择,设置选择和许多其他有用的功能。

Returns
ExpandableListView

也可以看看:

getSelectedId

Added in API level 1
long getSelectedId ()

获取当前选定的组或子项的ID。

Returns
long The ID of the currently selected group or child.

getSelectedPosition

Added in API level 1
long getSelectedPosition ()

获取当前选定的组或孩子的位置(打包位置表示形式)。 使用getPackedPositionType(long)getPackedPositionGroup(long) ,并getPackedPositionChild(long)解压返回的包装位置。

Returns
long A packed position representation containing the currently selected group or child's position and type.

onChildClick

Added in API level 1
boolean onChildClick (ExpandableListView parent, 
                View v, 
                int groupPosition, 
                int childPosition, 
                long id)

当点击一个孩子时覆盖这个接收回调。

当此可展开列表中的某个子项被点击时,将调用回调方法。

Parameters
parent ExpandableListView: The ExpandableListView where the click happened
v View: The view within the expandable list/ListView that was clicked
groupPosition int: The group position that contains the child that was clicked
childPosition int: The child position within the group
id long: The row id of the child that was clicked
Returns
boolean True if the click was handled

onContentChanged

Added in API level 1
void onContentChanged ()

内容更改时更新屏幕状态(当前列表和其他视图)。

也可以看看:

onCreateContextMenu

Added in API level 1
void onCreateContextMenu (ContextMenu menu, 
                View v, 
                ContextMenu.ContextMenuInfo menuInfo)

当长时间按下某个项目时,将其覆盖填充上下文菜单。 menuInfo将包含ExpandableListView.ExpandableListContextMenuInfo其packedPosition是打包位置,应与getPackedPositionType(long)和其他类似的方法一起使用。

当即将显示view的上下文菜单时调用。 onCreateOptionsMenu(Menu)不同,每当即将显示上下文菜单并且应该为视图填充时(或者在AdapterView子类的视图内的项目,这可以在menuInfo找到))时会menuInfo

使用 onContextItemSelected(android.view.MenuItem)来知道何时选择了一个项目。

在此方法返回后,保持上下文菜单是不安全的。

Parameters
menu ContextMenu: The context menu that is being built
v View: The view for which the context menu is being built
menuInfo ContextMenu.ContextMenuInfo: Extra information about the item for which the context menu should be shown. This information will vary depending on the class of v.

onGroupCollapse

Added in API level 1
void onGroupCollapse (int groupPosition)

重写此组件用于在组合已折叠时接收回调。

Parameters
groupPosition int: The group position that was collapsed

onGroupExpand

Added in API level 1
void onGroupExpand (int groupPosition)

覆盖此组件,以便在组展开后接收回调。

Parameters
groupPosition int: The group position that was expanded

setListAdapter

Added in API level 1
void setListAdapter (ExpandableListAdapter adapter)

为可扩展列表提供适配器。

Parameters
adapter ExpandableListAdapter

setSelectedChild

Added in API level 1
boolean setSelectedChild (int groupPosition, 
                int childPosition, 
                boolean shouldExpandGroup)

将选择设置为指定的子项。 如果孩子处于折叠组中,则只有在shouldExpandGroup设置为true时才会展开该组,并且随后选择该孩子,否则该方法将返回false。

Parameters
groupPosition int: The position of the group that contains the child.
childPosition int: The position of the child within the group.
shouldExpandGroup boolean: Whether the child's group should be expanded if it is collapsed.
Returns
boolean Whether the selection was successfully set on the child.

setSelectedGroup

Added in API level 1
void setSelectedGroup (int groupPosition)

将选择设置为指定的组。

Parameters
groupPosition int: The position of the group that should be selected.

Protected methods

onRestoreInstanceState

Added in API level 1
void onRestoreInstanceState (Bundle state)

确保在Activity恢复所有视图状态之前已创建可展开列表视图。

Parameters
state Bundle: the data most recently supplied in onSaveInstanceState(Bundle).

也可以看看:

Hooray!