1

我在互联网上找到了这段代码,一个ExpandableListView. 它运行完美。

import android.app.ExpandableListActivity;
import android.os.Bundle;
import android.widget.ExpandableListAdapter;
import android.widget.SimpleExpandableListAdapter;

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

/**
 * Demonstrates expandable lists backed by a Simple Map-based adapter
 */
public class SmplExpandableTest extends ExpandableListActivity {
    private static final String PARENT_KEY = "pKey";
    private static final String CHILD_KEY = "cKey";

    private ExpandableListAdapter mAdapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();
        List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();

        Map<String, String> curGroupMap = new HashMap<String, String>();
        groupData.add(curGroupMap);
        curGroupMap.put(PARENT_KEY, "Hello");
        curGroupMap.put(CHILD_KEY, "First Order System Response");

        List<Map<String, String>> children = new ArrayList<Map<String, String>>();

        Map<String, String> curChildMap = new HashMap<String, String>();
        children.add(curChildMap);
        curChildMap.put(PARENT_KEY, "World");
        curChildMap.put(CHILD_KEY, "Second Order System");

        childData.add(children);

        // Set up our adapter
        mAdapter = new SimpleExpandableListAdapter(this, groupData,
                android.R.layout.simple_expandable_list_item_1, new String[] {
                        PARENT_KEY, CHILD_KEY }, new int[] {
                        android.R.id.text1, android.R.id.text2 }, childData,
                android.R.layout.simple_expandable_list_item_2, new String[] {
                        PARENT_KEY, CHILD_KEY }, new int[] {
                        android.R.id.text1, android.R.id.text2 });
        setListAdapter(mAdapter);
    }
}

现在我想将它插入到ExpandableListView布局中,这样我就可以在底部添加一个按钮。我怎样才能做到这一点 ?

谢谢

4

2 回答 2

2

要将 a 添加Button到屏幕底部,您ExpandableListView必须做两件事:

  1. 该活动必须从而Activity不是扩展ExpandableListActivity。而且您必须设置自定义布局。
  2. 创建包含ExpandableListView和 'Button' 的自定义布局。

该活动将类似于:

public class SmplExpandableTest extends Activity {
    private static final String PARENT_KEY = "pKey";
    private static final String CHILD_KEY = "cKey";

    private ExpandableListAdapter mAdapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_layout);
        ExpandableListView elv = (ExpandableListView) findViewById(R.id.elv);

        List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();
        List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();

        Map<String, String> curGroupMap = new HashMap<String, String>();
        groupData.add(curGroupMap);
        curGroupMap.put(PARENT_KEY, "Hello");
        curGroupMap.put(CHILD_KEY, "First Order System Response");

        List<Map<String, String>> children = new ArrayList<Map<String, String>>();

        Map<String, String> curChildMap = new HashMap<String, String>();
        children.add(curChildMap);
        curChildMap.put(PARENT_KEY, "World");
        curChildMap.put(CHILD_KEY, "Second Order System");

        childData.add(children);

        // Set up our adapter
        mAdapter = new SimpleExpandableListAdapter(this, groupData,
                android.R.layout.simple_expandable_list_item_1, new String[] {
                        PARENT_KEY, CHILD_KEY }, new int[] {
                        android.R.id.text1, android.R.id.text2 }, childData,
                android.R.layout.simple_expandable_list_item_2, new String[] {
                        PARENT_KEY, CHILD_KEY }, new int[] {
                        android.R.id.text1, android.R.id.text2 });

        elv.setAdapter(mAdapter);
    }
}

布局res/layout/my_layout.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" >
        <ExpandableListView 
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:id="@+id/elv" >
        </ExpandableListView>
        <Button 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/btn"
            android:text="@string/btn_text" >
</LinearLayout>
于 2012-11-06T10:09:42.913 回答
1

您需要在 xml 中使用Expandable listview并将其绑定为BaseExtendedAdapter

这是示例

于 2012-11-06T09:39:43.080 回答