ExpandableListView组件详解
2012-09-18 01:47
337 查看
直接上图:
代码:
定义是适配器
定义布局管理器
定义Activity
本文出自 “美好家园” 博客,请务必保留此出处http://mxjy1208.blog.51cto.com/1197381/995711
代码:
定义是适配器
package com.wsl.expandablelistview; import android.content.Context; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.BaseExpandableListAdapter; import android.widget.TextView; public class MyExpandableListAdapter extends BaseExpandableListAdapter { private String[] groups={"我的好友","家人","同事","高中同学","初中同学"}; private String[][] children={{"王明","李乐","刘冲","卢广名"},{"王明","李乐","刘冲","卢广名"},{"王明","李乐","刘冲","卢广名"},{"王明","李乐","刘冲","卢广名"}}; private Context context=null; public MyExpandableListAdapter(Context context){ this.context=context; } public Object getChild(int groupPosition, int childPosition) { // TODO Auto-generated method stub return this.children[groupPosition][childPosition]; } public long getChildId(int groupPosition, int childPosition) { // TODO Auto-generated method stub return childPosition; } public TextView buildTextView(){ AbsListView.LayoutParams param=new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 35); TextView textview=new TextView(this.context); textview.setLayoutParams(param); textview.setTextSize(15.0f); textview.setGravity(Gravity.LEFT); textview.setPadding(40, 8, 3, 3); return textview; } public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { // TODO Auto-generated method stub TextView textView=buildTextView(); textView.setText(getChild(groupPosition, childPosition).toString()); return textView; } public int getChildrenCount(int groupPosition) { // TODO Auto-generated method stub return this.children[groupPosition].length; } public Object getGroup(int groupPosition) { // TODO Auto-generated method stub return this.groups[groupPosition]; } public int getGroupCount() { // TODO Auto-generated method stub return groups.length; } public long getGroupId(int groupPosition) { // TODO Auto-generated method stub return groupPosition; } public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { // TODO Auto-generated method stub TextView textview=buildTextView(); textview.setText(this.getGroup(groupPosition).toString()); return textview; } public boolean hasStableIds() { // TODO Auto-generated method stub return true; } public boolean isChildSelectable(int groupPosition, int childPosition) { // TODO Auto-generated method stub return true; } }
定义布局管理器
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ExpandableListView android:id="@+id/elistview" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
定义Activity
package com.wsl.expandablelistview; import android.os.Bundle; import android.app.Activity; import android.view.ContextMenu; import android.view.Menu; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.widget.ExpandableListAdapter; import android.widget.ExpandableListView; import android.widget.ExpandableListView.OnChildClickListener; import android.widget.ExpandableListView.OnGroupClickListener; import android.widget.ExpandableListView.OnGroupCollapseListener; import android.widget.ExpandableListView.OnGroupExpandListener; import android.widget.Toast; public class MainActivity extends Activity { private ExpandableListView elistview=null; private ExpandableListAdapter adapter=null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.elistview=(ExpandableListView) super.findViewById(R.id.elistview); this.adapter=new MyExpandableListAdapter(this); this.elistview.setAdapter(adapter); registerForContextMenu(this.elistview); this.elistview.setOnChildClickListener(new OnChildClickListenerImpl()); this.elistview.setOnGroupClickListener(new OnGroupClickListenerImpl()); this.elistview.setOnGroupCollapseListener(new OnGroupCollapseListenerImpl()); this.elistview.setOnGroupExpandListener(new OnGroupExpandListenerImpl()); } private class OnChildClickListenerImpl implements OnChildClickListener{ public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { Toast.makeText(MainActivity.this, "分组被选中,groupposition"+childPosition+",childPosition="+childPosition, Toast.LENGTH_LONG).show(); return false; } } private class OnGroupClickListenerImpl implements OnGroupClickListener{ public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "分组被选中,groupposition"+groupPosition, Toast.LENGTH_LONG).show(); return false; } } public class OnGroupCollapseListenerImpl implements OnGroupCollapseListener{ public void onGroupCollapse(int groupPosition) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "关闭分组,groupposition"+groupPosition, Toast.LENGTH_LONG).show(); } } public class OnGroupExpandListenerImpl implements OnGroupExpandListener{ public void onGroupExpand(int groupPosition) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "打开分组,groupposition"+groupPosition, Toast.LENGTH_LONG).show(); } } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub super.onCreateContextMenu(menu, v, menuInfo); ExpandableListView.ExpandableListContextMenuInfo info= (ExpandableListView.ExpandableListContextMenuInfo) menuInfo; int type=ExpandableListView.getPackedPositionType(info.packedPosition); int group=ExpandableListView.getPackedPositionGroup(info.packedPosition); int child=ExpandableListView.getPackedPositionChild(info.packedPosition); Toast.makeText(MainActivity.this, "type="+type+";group"+group+";child="+child, Toast.LENGTH_LONG); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
本文出自 “美好家园” 博客,请务必保留此出处http://mxjy1208.blog.51cto.com/1197381/995711
相关文章推荐
- ExpandableListView方法详解
- 安卓 ExpandableListView的使用详解
- ExpandableListView(可展开的列表组件)的说明以及其用法
- android ExpandableListView详解
- Android列表组件ListView使用详解之设置分割线
- Android组件ExpandableListView及其适配器,线程中的runOnUiThread()的使用
- (4.2.5) 【android开源组件】SwipeListView 详解 实现微信,QQ等滑动删除效果
- Android学习第五天————ExpandableListView组件通过适配器BaseExpandableListAdapter实现两层列表项
- android:ExpandableListView(可扩展的ListView)使用详解;
- Android Widget详解 —— ExpandableListView
- 可展开的列表组件ExpandableListView
- Android中ExpandableListView的使用详解
- 【Android UI设计】ExpandableListView详解
- ExpandableListView(可展开的列表组件)使用方法
- android 树型组件(ExpandableListView)
- android 扩展列表ExpandableListView的详解和使用
- Android ExpandableListView组件
- ExpandableListView(可展开的列表组件)的说明以及其用法
- Android列表组件ListView使用详解之取消子项的点击效果
- Android列表组件ListView使用详解之动态加载或修改列表数据