ExpandableListView
是 Android 中的一种列表视图,它允许用户展开和折叠每个子项,从而显示更多的内容。ExpandableListView
的子项布局通常包含两部分:一个用于显示基本内容的布局,另一个用于显示展开后的额外内容(如果有的话)。
以下是一个简单的 ExpandableListView
子项布局示例:
- 首先,在
res/layout
目录下创建一个新的布局文件,例如list_item_expandable.xml
。这个文件将定义子项的基本布局和展开后的布局。
在这个示例中,我们使用了一个 LinearLayout
作为子项的基本布局,其中包含一个 TextView
用于显示基本内容,以及一个 ImageView
用于显示展开按钮。
- 接下来,在
ExpandableListView
的适配器中,你需要重写getView()
方法来返回子项的布局。在这个方法中,你可以根据当前子项的状态(是否展开)来决定显示哪个布局。
@Override public View getView(int groupPosition, View convertView, ViewGroup parent) { // 获取基本内容布局和展开按钮 View basicLayout = convertView; ImageView expandButton = (ImageView) basicLayout.findViewById(R.id.imageViewExpand); // 获取基本内容文本 TextView textViewBasic = (TextView) basicLayout.findViewById(R.id.textViewBasic); String basicText = getItem(groupPosition).getBasicText(); // 根据子项是否展开来设置布局 if (isItemExpanded(groupPosition)) { // 如果子项已展开,显示展开后的布局 basicLayout = inflateExpandedLayout(parent); textViewBasic.setText(basicText + " (Expanded)"); } else { // 如果子项未展开,显示基本布局 basicLayout = inflateBasicLayout(basicLayout); textViewBasic.setText(basicText); } // 设置展开按钮的点击事件 expandButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { toggleItemExpansion(groupPosition); } }); return basicLayout; }
在这个示例中,我们首先尝试使用 convertView
(如果存在)来避免不必要的布局重新创建。然后,我们根据子项是否展开来决定显示哪个布局,并更新相应的文本。最后,我们设置了展开按钮的点击事件,用于切换子项的展开状态。
注意:这个示例仅用于演示目的,实际应用中可能需要根据具体需求进行调整。例如,你可能需要处理更复杂的布局结构、动态加载数据等。