ExpandableListView的使用

来源:互联网 发布:算法竞赛宝典淘宝 编辑:程序博客网 时间:2024/06/01 10:00

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);    }}


0 0