Android组件学习之ExpandableListView
2014-08-10 19:25
288 查看
一个简单的小例子:
![](http://images.cnitblog.com/i/640314/201408/101904074434370.png)
可以展开的ListView,和Listview差不多,只是设置的Adapter不同。常用的Adapter有BaseExpandableListAdapter、SimpleExpandableListAdapter、SimpleCursorTreeAdapter
布局如下:(布局中我设置了android:groupIndicator,不知道为什么不起作用。另外,android:dividerHeight这个属性是组对象和子节点共用的。如果要定义比较复杂的组视图及子节点视图,还是单独设置一个layout文件,再在Adapter中设置相应的返回View视图)
主Activity如下:
Adapter我写到另外一个类文件中:
![](http://images.cnitblog.com/i/640314/201408/101904074434370.png)
可以展开的ListView,和Listview差不多,只是设置的Adapter不同。常用的Adapter有BaseExpandableListAdapter、SimpleExpandableListAdapter、SimpleCursorTreeAdapter
布局如下:(布局中我设置了android:groupIndicator,不知道为什么不起作用。另外,android:dividerHeight这个属性是组对象和子节点共用的。如果要定义比较复杂的组视图及子节点视图,还是单独设置一个layout文件,再在Adapter中设置相应的返回View视图)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.testandroid.ui.MainActivity" > <ExpandableListView android:id="@+id/main_elv1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:childDivider="@color/white" android:divider="@color/gray" android:dividerHeight="1px" android:groupIndicator="@drawable/arrow_triangle_down" android:indicatorLeft="4dp" android:indicatorRight="4dp" > </ExpandableListView> </RelativeLayout>
主Activity如下:
package com.example.testandroid.ui; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; import android.widget.ExpandableListView; import com.example.testandroid.R; import com.example.testandroid.adapter.MainActivityExLVAdapter; public class MainActivity extends ActionBarActivity { private ExpandableListView mExpandableListView = null; private MainActivityExLVAdapter mMainActivityExLVAdapter = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { mExpandableListView = (ExpandableListView) findViewById(R.id.main_elv1); mMainActivityExLVAdapter = new MainActivityExLVAdapter(this); mExpandableListView.setAdapter(mMainActivityExLVAdapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
Adapter我写到另外一个类文件中:
package com.example.testandroid.adapter; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.TextView; public class MainActivityExLVAdapter extends BaseExpandableListAdapter { private Context mContext = null; private String[] mGroup = { "FirstOne", "SecondTwo", "ThirdThress" }; private String[][] mChildren = { { "2014-year-01-month-01", "2014-year-01-month-02", "2014-year-01-month-03", "2014-year-01-month-04", "2014-year-01-month-05" }, { "2014-year-02-month-01", "2014-year-02-month-02", "2014-year-02-month-03", "2014-year-02-month-04" }, { "2014-year-03-month-01", "2014-year-03-month-02", } }; public MainActivityExLVAdapter(Context mContext) { this.mContext = mContext; } /** * 获取组的数量 */ @Override public int getGroupCount() { return mGroup.length; } /** * 获取组下的节点数量 */ @Override public int getChildrenCount(int groupPosition) { return mChildren[groupPosition].length; } /** * 获取组对象(这个方法可以返回任意对象,或者null都行,给自己调用的) */ @Override public Object getGroup(int groupPosition) { return mGroup[groupPosition]; } /** * 获取子节点对象(这个方法可以返回任意对象,或者null都行,给自己调用的) */ @Override public Object getChild(int groupPosition, int childPosition) { return mChildren[groupPosition][childPosition]; } /** * 给自己调用的 */ @Override public long getGroupId(int groupPosition) { return groupPosition; } /** * 给自己调用的 */ @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } /** * TODO 不知道有什么用 */ @Override public boolean hasStableIds() { return true; } /** * 返回组对象的视图 */ @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { TextView mTextView = new TextView(mContext); mTextView.setText(getGroup(groupPosition).toString()); return mTextView; } /** * 返回子节点的视图 */ @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { TextView mTextView = new TextView(mContext); mTextView.setText(getChild(groupPosition, childPosition).toString()); return mTextView; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return false; } }
相关文章推荐
- android学习之----ExpandableListView组件
- Android学习第五天————ExpandableListView组件通过适配器BaseExpandableListAdapter实现两层列表项
- Android学习指南之十二:列表组件ListView
- Android中可展开的列表组件(ExpandableListView)的使用
- android学习之LayoutInflater的用法,在myAdapter getView()里将多个TextView组件压缩成一个View控件,并在listView里显示
- Android可展开的列表组件(ExpandableListView)模板
- 一看就会Android之分组列表组件ExpandableListView的使用
- Android学习12——Tab组件和ListView组件结合
- Android的ExpandableListView的学习
- ExpandableListView组件学习笔记
- Android的ExpandableListView-android学习之旅(二十八)
- Android组件ExpandableListView及其适配器,线程中的runOnUiThread()的使用
- (ExpandableListView)android中树形组件的使用
- android 树型组件(ExpandableListView)
- Android(java)学习笔记186:对ListView等列表组件中数据进行增、删、改操作
- android学习:ExpandableListView的运用
- Android实现listview、expandablelistview、scrollview等组件的下拉或上拉刷新
- Android 可展开列表组件 ExpandableListView
- 我的学习之旅:android expandablelistview的应用
- Android实战简易教程<十一>(树形组件:ExpandableListView显示和动态添加删除)