您的位置:首页 > 其它

ExpandableListView的使用

2016-01-25 12:01 197 查看
1.定义父视图layout_parent.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent" android:layout_height="match_parent">
<TextView
android:id="@+id/parent_textview"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="center"
android:gravity="center" />
</LinearLayout>
2.定义子视图layout_children.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/second_textview"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_gravity="center"
android:gravity="center" />
</LinearLayout>3.定义继承BaseExpandableListAdapter的ViewAdapter,并实现相应的方法
package com.gst.user.application;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;

import java.util.List;
import java.util.Map;

/**
* Created by user on 1/20/16.
*/
public class ViewAdapter extends BaseExpandableListAdapter {

private Context mContext;
private List<String> mParent;
private Map<String,List<String>> mData;
private LayoutInflater mLayoutInflater;

public ViewAdapter(Context mContext, List<String> mParent, Map<String, List<String>> mData) {
this.mContext = mContext;
this.mParent = mParent;
this.mData = mData;
mLayoutInflater=(LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public int getGroupCount() {
return mParent.size();
}

@Override
public int getChildrenCount(int groupPosition) {
return mData.get(mParent.get(groupPosition)).size();
}

@Override
public Object getGroup(int groupPosition) {
return mParent.get(groupPosition);
}

@Override
public Object getChild(int groupPosition, int childPosition) {
return mData.get(mParent.get(groupPosition)).get(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;
}

//设置父item组件
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView=mLayoutInflater.inflate(R.layout.layout_parent,null);
}
TextView textView= (TextView) convertView.findViewById(R.id.parent_textview);
textView.setText(mParent.get(groupPosition));
return convertView;
}

//设置子item的组件
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView=mLayoutInflater.inflate(R.layout.layout_children,null);
}
TextView textView= (TextView) convertView.findViewById(R.id.second_textview);
textView.setText(mData.get(mParent.get(groupPosition)).get(childPosition));
return convertView;
}

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
}
4.在主工程中添加数据,实例化ViewAdapter,绑定ExpandableListView
package com.gst.user.application;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.ExpandableListView;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ExpandableListViewActivity extends AppCompatActivity {

ExpandableListView expandableListView;
Map<String,List<String>> mData;
List parent;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_expandable_list_view);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});

initData();

expandableListView=(ExpandableListView)findViewById(R.id.expandableListView);
ViewAdapter adapter=new ViewAdapter(this,parent,mData);
expandableListView.setAdapter(adapter);
}

// 初始化数据
public void initData() {
parent = new ArrayList<String>();
parent.add("parent1");
parent.add("parent2");
parent.add("parent3");

mData = new HashMap<String, List<String>>();

List<String> list1 = new ArrayList<String>();
list1.add("child1-1");
list1.add("child1-2");
list1.add("child1-3");
mData.put("parent1", list1);

List<String> list2 = new ArrayList<String>();
list2.add("child2-1");
list2.add("child2-2");
list2.add("child2-3");
mData.put("parent2", list2);

List<String> list3 = new ArrayList<String>();
list3.add("child3-1");
list3.add("child3-2");
list3.add("child3-3");
mData.put("parent3", list3);
}

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