2012-11-06 62 views
1

我在因特网中找到了此代码,这是ExpandableListView的一个示例。它运行完美。在布局中添加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布局里面,这样我就可以在底部添加一个按钮。我怎样才能做到这一点 ?

感谢

回答

2

要将Button添加到您的屏幕的底部ExpandableListView你要下做2件事:

  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> 
+0

那是一个不少。你能否告诉我,当你在SmplExpandableTest类中添加行时会发生什么? – fean

+0

您应该查看它的文档。 'setContentView'设置布局('ExpandableListActivity'内部使用一些预定义的布局)。然后,您必须将适配器设置为'ExpandableListView'(您不能使用'ExpandableListActivity'的'setListAdapter'实用程序功能)。 – Tomik

1

你需要使用可扩展的ListView在XML中,并将其绑定为BaseExtendedAdapter

这里example