ExpandableListView的用法和ListView非常像,只是其所显示的列表项应该由ExpandableListAdapter提供,下面是它的xml属性及说明:

然而,接下来是用事实说话了:

--------------------------------------------------------------------------------

1、该项目的布局文件非常简单,和ListView差不多,此处就不贴出代码了。

2、ExpandableListViewActivity.java关键代码如下:

(要定义一个全局的私有的listView变量)

listView = (ExpandableListView) findViewById(R.id.list);
MyExpandableListAdapter adapter = new MyExpandableListAdapter();
listView.setAdapter(adapter);

3、MyExpandableListAdapter代码如下:

public class MyExpandableListAdapter implements ExpandableListAdapter {
int[] logos = new int[]{
R.drawable.word,
R.drawable.excel,
R.drawable.email,
R.drawable.ppt
};
private String[] armTypes = new String[]{
"WORD", "EXCEL", "EMAIL", "PPT"
};
private String[][] arms = new String[][]{
{"文档编辑", "文档排版", "文档处理", "文档打印"},
{"表格编辑", "表格排版", "表格处理", "表格打印"},
{"收发邮件", "管理邮箱", "登录登出", "注册绑定"},
{"演示编辑", "演示排版", "演示处理", "演示打印"},
}; @Override
public void registerDataSetObserver(DataSetObserver observer) { } @Override
public void unregisterDataSetObserver(DataSetObserver observer) { } @Override
public int getGroupCount() {
return armTypes.length;
} @Override
public int getChildrenCount(int groupPosition) {
return arms[groupPosition].length;
} @Override
public Object getGroup(int groupPosition) {
return armTypes[groupPosition];
} @Override
public Object getChild(int groupPosition, int childPosition) {
return arms[groupPosition][childPosition];
} @Override
public long getGroupId(int groupPosition) {
return groupPosition;
} @Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
} @Override
public boolean hasStableIds() {
return true;
} @Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
LinearLayout ll = new LinearLayout(ExpandableListViewActivity.this);
ll.setOrientation(LinearLayout.HORIZONTAL);
ImageView logo = new ImageView(ExpandableListViewActivity.this);
logo.setImageResource(logos[groupPosition]);
logo.setPadding(, , , );
ll.addView(logo);
TextView textView = getTextView();
textView.setText(getGroup(groupPosition).toString());
textView.setPadding(, , , );
ll.addView(textView);
return ll;
} @Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
TextView textView = getTextView();
textView.setText(getChild(groupPosition, childPosition).toString());
return textView;
} @Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
} @Override
public boolean areAllItemsEnabled() {
return false;
} @Override
public boolean isEmpty() {
return false;
} @Override
public void onGroupExpanded(int groupPosition) { } @Override
public void onGroupCollapsed(int groupPosition) { } @Override
public long getCombinedChildId(long groupId, long childId) {
return ;
} @Override
public long getCombinedGroupId(long groupId) {
return ;
} private TextView getTextView() {
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, );
TextView textView = new TextView(ExpandableListViewActivity.this);
textView.setLayoutParams(lp);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
textView.setPadding(, , , );
textView.setTextSize();
return textView;
}
}

代码上面没有做多少注释,在这里说明一下吧:

该adapter有两个关键方法:getChildView()和getGroupView();

----------前者返回的view对象作为子列表项,后者返回的view作为组列表项。

4、下面是该程序的运行界面了:

最新文章

  1. 详解Paint的setXfermode(Xfermode xfermode)
  2. POJ 1451 T9
  3. Git笔记 整理2
  4. URAL1133. Fibonacci Sequence(二分)
  5. 用JavaScript获取一个超链接的绝对URL地址
  6. 在Service中使用广播接受者
  7. Smarty属性
  8. 在IT界取得成功应该知道的10件事
  9. nginx之fastcgi
  10. 通过web sql实现增删查改
  11. (转)搬瓦工(bandwagonhost)后台管理VPS
  12. 页面引入css用link和import的区别
  13. iOS 判断数组array中是否包含元素a,取出a在array中的下标+数组方法详解
  14. 描述性统计指标 - 众数 Mode
  15. mac IntelliJ Idea添加schema和dtd约束提示
  16. opencart分类筛选逻辑修改为并且条件
  17. JavaScript常见的代码精简
  18. bower介绍
  19. Microsoft® SQL Server® 2008 Express with Tools
  20. iOS为数字键盘增加完成按钮

热门文章

  1. SKTransition类
  2. Python使用mechanize模拟浏览器
  3. Ellipse常用快捷键
  4. [Protractor] Test Simple Binding With Protractor
  5. honeywell D6110开发的一个工厂仓库追溯识别
  6. shape 填充 圆角矩形 圆形 环形
  7. 话付通SDK 聚合支付
  8. 小学生之Map集合框架的使用
  9. OD: File Vulnerabilities & Protocols & Fuzz
  10. NotImplementedException未实现该方法或操作