阅读更多 ExpandableList 是折叠列表,通过继承ExpandableListActivity 类就可以非常简单的实现折叠列表。
效果图:
Android折叠列表 ExpandableList_第1张图片

代码实现
package com.zhou.activity;import android.app.ExpandableListActivity;import android.os.Bundle;import android.view.ContextMenu;import android.view.Gravity;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.view.ContextMenu.ContextMenuInfo;import android.widget.AbsListView;import android.widget.BaseExpandableListAdapter;import android.widget.ExpandableListAdapter;import android.widget.ExpandableListView;import android.widget.TextView;import android.widget.Toast;import android.widget.ExpandableListView.ExpandableListContextMenuInfo;public class ExpandableList extends ExpandableListActivity {//声明adapterprivate ExpandableListAdapter mAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//设这标题setTitle("可扩展的列表");//实例化adaptermAdapter = new MyExpandableListAdapter();//为列表设置adaptersetListAdapter(mAdapter);//为list注册context菜单registerForContextMenu(this.getExpandableListView());}@Overridepublic boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {Toast.makeText(this, " 组元素索引: " + groupPosition + " 子元素索引: " + childPosition, Toast.LENGTH_SHORT).show();return super.onChildClick(parent, v, groupPosition, childPosition, id);}@Overridepublic void onGroupExpand(int groupPosition) {Toast.makeText(this, " 组元素索引: " + groupPosition, Toast.LENGTH_SHORT).show();super.onGroupExpand(groupPosition);}@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {menu.setHeaderTitle("上下文菜单");menu.add(0, 0, 0, "单击我");}// 单击上下文菜单后的逻辑@Overridepublic boolean onContextItemSelected(MenuItem item) {ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) item.getMenuInfo();String title = ((TextView) info.targetView).getText().toString();int type = ExpandableListView.getPackedPositionType(info.packedPosition);if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition);int childPos = ExpandableListView.getPackedPositionChild(info.packedPosition);Toast.makeText(this, title + " 组元素索引: " + groupPos + " 子元素索引: " + childPos, Toast.LENGTH_SHORT).show();return true;} else if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition);Toast.makeText(this, title + " 组元素索引: " + groupPos, Toast.LENGTH_SHORT).show();return true;}return false;}//自定义Adapterpublic class MyExpandableListAdapter extends BaseExpandableListAdapter {// 父列表数据private String[] groups = { "吉林省", "辽宁省", "黑龙江省","山东省" };// 子列表数据private String[][] children = {{ "长春市" },{ "沈阳市", "铁岭市" },{ "哈尔滨市", "齐齐哈尔市", "牡丹江市" },{ "济南市", "青岛市", "淄博市", "潍坊市" }};@Overridepublic Object getChild(int groupPosition, int childPosition) {return children[groupPosition][childPosition];}@Overridepublic long getChildId(int groupPosition, int childPosition) {return childPosition;}@Overridepublic int getChildrenCount(int groupPosition) {return children[groupPosition].length;}// 取子列表中的某一项的 View@Overridepublic View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent) {TextView textView = getGenericView();textView.setText(getChild(groupPosition, childPosition).toString());return textView;}@Overridepublic Object getGroup(int groupPosition) {return groups[groupPosition];}@Overridepublic int getGroupCount() {return groups.length;}@Overridepublic long getGroupId(int groupPosition) {return groupPosition;}// 取父列表中的某一项的 View@Overridepublic View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) {TextView textView = getGenericView();textView.setText(getGroup(groupPosition).toString());return textView;}@Overridepublic boolean hasStableIds() {return true;}@Overridepublic boolean isChildSelectable(int groupPosition, int childPosition) {return true;}// 获取某一项的 View 的逻辑private TextView getGenericView() {AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 48);TextView textView = new TextView(ExpandableList.this);textView.setLayoutParams(lp);textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);textView.setPadding(32, 0, 0, 0);return textView;}}}
  • Android折叠列表 ExpandableList_第2张图片
  • 大小: 17.2 KB
  • ExpandableList.rar (44.9 KB)
  • 下载次数: 598
  • 查看图片附件

更多相关文章

  1. Android UI列表的上拉下拉刷新之Android-PullToRefresh
  2. 第二十篇 Android获取本机图片、音频、视频、文档以及本地文件夹
  3. Android所有可用的资源列表
  4. Android 下拉列表 Spinner
  5. Android仿QQ好友列表分组实现增删改及持久化
  6. Android中的二级列表的应用

随机推荐

  1. Android(安卓)ApiDemos 学习——时间日期
  2. android UI进阶之弹窗的使用(2)--实现通讯
  3. The method setOnClickListener(View.OnC
  4. 使用gdb远程调试android native程序
  5. android sdk+eclipse+adt 配置与开发
  6. Android打开系统设置界面
  7. android2.3 api demo 学习系列(4)--App/Act
  8. Android(安卓)布局
  9. Android(安卓)OTA 升级之二:脚本 ota_from
  10. Android(安卓)Adapter的应用