使用HashMap创建ExpandableListView时出错<string,list <string>&gt; </string,list <string>

时间:2013-12-15 12:59:17

标签: android expandablelistview

我正在尝试在Android应用程序中创建一个简单的ExpandableListView。

这是为ExpandableListView.I准备数据的代码,因为在我的应用程序中,这些数据是在运行时发生的,所以我无法识别它将会持续多长时间。

header = new ArrayList<String>();
child = new HashMap<String, List<String>>();

header.add("Top 250");
header.add("Now Showing");
header.add("Coming Soon");

for (int i = 0; i < 3; i++) {
        List<String> Map = new ArrayList<String>();
        Map.add("Hello:" + i);
        child.put(header.get(i), Map);
}

为了填充ExpandableListView,我在这里创建了自定义适配器代码。

@Override
public Object getChild(int groupPosition, int childPosition) {

    String headerData = this._listDataHeader.get(groupPosition);

    List<String> listData = this._listDataChild.get(headerData);

    return listData.get(childPosition);

}

当我尝试运行此应用程序时,ExpandableListView中的标题看起来很完美,但是当我点击特定标题时应用程序失败。

这是logcat。

java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1

at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)

at java.util.ArrayList.get(ArrayList.java:304)

com.kamani.expandablelistdemo.MyCustomAdpater.getChild(MyCustomAdpater.java:36)

com.kamani.expandablelistdemo.MyCustomAdpater.getChildView(MyCustomAdpater.java:51)

android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:451)

我知道我在getChild()方法中遇到错误,在返回数据时会说IndexOutOfBoundsException但无法理解如何使其正确,以便在一个Header中显示一个Sting?

1 个答案:

答案 0 :(得分:1)

适配器中的getChildrenCount()方法返回无效值。

无效值表示该值可能大于实际尺寸或小于实际尺寸。

首先在getChildernCount()上运行,然后在getChild()方法上运行。

在我的代码中,我忘了更正getChilderCount()方法中的代码。