我正在尝试在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?
答案 0 :(得分:1)
适配器中的getChildrenCount()方法返回无效值。
无效值表示该值可能大于实际尺寸或小于实际尺寸。
首先在getChildernCount()上运行,然后在getChild()方法上运行。
在我的代码中,我忘了更正getChilderCount()方法中的代码。