您的位置:首页 > 移动开发 > Android开发

Android之ExpandableListView控件使用

2015-12-19 15:11 543 查看
创建工程Android_expandableListView中添加控件ExpandableListView

<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.android_expandablelistview.MainActivity" >

<ExpandableListView
android:id="@+id/expandableListView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</ExpandableListView>

</RelativeLayout>


package com.example.android_expandablelistview;

import java.util.ArrayList;
import java.util.List;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

private ExpandableListView listView;
private MyAdapter adapter;
private List<String> group;//组
private List<List<String>> child;//子

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(ExpandableListView) this.findViewById(R.id.expandableListView1);

adapter=new MyAdapter();
initData();
listView.setAdapter(adapter);

listView.setGroupIndicator(null);//把箭头去掉

}

//初始化数据,组和子元素实例化
public void initData(){
group=new ArrayList<String>();
child=new ArrayList<List<String>>();

addInfo("广东",new String[]{"深圳","珠海","广州"});
addInfo("湖北",new String[]{"武汉","孝感","黄冈"});
addInfo("河南",new String[]{"郑州","洛阳","商丘"});

}

public void addInfo(String g,String[] c){
group.add(g);//添加组
List<String> list = new ArrayList<String>();
for(int i=0;i<c.length;i++){
list.add(c[i]);
}
child.add(list);
}

class MyAdapter extends BaseExpandableListAdapter{

@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return group.size();
}

@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return child.size();
}

@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return group.get(groupPosition);
}

@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return child.get(groupPosition).get(childPosition);
}

@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}

@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
}

@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}

@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub

TextView textView = null;
if(convertView==null){
textView = new TextView(MainActivity.this);
}else{
textView = (TextView)convertView;
}
textView.setText(group.get(groupPosition));
textView.setTextSize(30);
textView.setPadding(36, 10, 0, 10);
return textView;
}

@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
TextView textView = null;
if(convertView==null){
textView = new TextView(MainActivity.this);
}else{
textView = (TextView)convertView;
}
textView.setText(child.get(groupPosition).get(childPosition));
textView.setTextSize(20);
textView.setPadding(72, 10, 0, 10);
return textView;
}

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return true;
}

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}


运行效果图如下

去掉箭头,加上

listView.setGroupIndicator(null);//把箭头去掉




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: