Java 需要帮助解决ExpandableListView中的IndexOutOfBoundsException
我一直在谷歌上搜索一些类似的问题,但我就是不知道是什么导致了我的错误(我知道错误在哪里,但我不知道如何以代码方式解决)。我知道我可能会因此受到一些批评,但如果有人能帮我解决代码问题,我将非常感激 我的ExpandableListViewAdapter:Java 需要帮助解决ExpandableListView中的IndexOutOfBoundsException,java,android,arraylist,Java,Android,Arraylist,我一直在谷歌上搜索一些类似的问题,但我就是不知道是什么导致了我的错误(我知道错误在哪里,但我不知道如何以代码方式解决)。我知道我可能会因此受到一些批评,但如果有人能帮我解决代码问题,我将非常感激 我的ExpandableListViewAdapter: public class ExpandableListAdapter extends BaseExpandableListAdapter { private Context context; private List<St
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context context;
private List<String> listDataHeader;
private ArrayList<ArrayList<Question>> listDataChild;
private LayoutInflater inflater;
public ExpandableListAdapter(Context context, List<String> listDataHeader,
ArrayList<ArrayList<Question>> listChildData) {
this.context = context;
this.listDataHeader = listDataHeader;
this.listDataChild = listChildData;
inflater = LayoutInflater.from(context);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return listDataChild.get(groupPosition).get(childPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
View view = null;
if (convertView != null)
view = convertView;
else
view = inflater.inflate(R.layout.list_item, parent, false);
Question question = (Question) getChild(groupPosition, childPosition);
TextView txtviewquestion = (TextView) view.findViewById(R.id.question);
if (txtviewquestion != null)
txtviewquestion.setText(question.getQuestion());
//***TITTA NÄRMARE PÅ KNAPPARNA******
//Button btnPositive = (Button)view.findViewById( R.id.BtnPositive );
//btnPositive.setChecked( c.getState() );
//Button btnNegative = (Button)view.findViewById( R.id.BtnNegative );
//btnNegative.setChecked( c.getState() );
return view;
}
@Override
public int getChildrenCount(int groupPosition) {
return listDataChild.get(groupPosition).size();
}
@Override
public Object getGroup(int groupPosition) {
return this.listDataHeader.get(groupPosition);
}
@Override
public int getGroupCount() {
return this.listDataHeader.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
View view = null;
//String headerTitle = (String) getGroup(groupPosition);
if (convertView != null) {
view = convertView;
} else
view = inflater.inflate(R.layout.list_group, parent, false);
String getgroup = (String) getGroup(groupPosition);
TextView questiongroup = (TextView) view.findViewById(R.id.lblListHeader);
if (getgroup != null)
questiongroup.setText(getgroup);
/**
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_group, null);
}
TextView lblListHeader = (TextView) convertView
.findViewById(R.id.lblListHeader);
lblListHeader.setTypeface(null, Typeface.BOLD);
lblListHeader.setText(headerTitle);
return convertView;
**/
return view;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
public void onGroupCollapsed(int groupPosition) {
}
public void onGroupExpanded(int groupPosition) {
}
}
您从未向已创建的问题列表中添加任何内容 所以当你打电话的时候
listAdapter = new ExpandableListAdapter (this, groupNames, questions);
您使用空列表。在创建新问题之前,您应该将问题列表添加到问题列表中。Ah!我犯了这样草率的错误。我将编辑丢失的代码。谢谢你指出!
05-01 22:09:06.215: W/System.err(23939): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 0
05-01 22:09:06.215: W/System.err(23939): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
05-01 22:09:06.215: W/System.err(23939): at java.util.ArrayList.get(ArrayList.java:304)
05-01 22:09:06.215: W/System.err(23939): at com.example.ovakoappen.ExpandableListAdapter.getChildrenCount(ExpandableListAdapter.java:69)
05-01 22:09:06.215: W/System.err(23939): at android.widget.ExpandableListConnector.refreshExpGroupMetadataList(ExpandableListConnector.java:567)
05-01 22:09:06.215: W/System.err(23939): at android.widget.ExpandableListConnector.expandGroup(ExpandableListConnector.java:698)
05-01 22:09:06.215: W/System.err(23939): at android.widget.ExpandableListView.handleItemClick(ExpandableListView.java:569)
05-01 22:09:06.215: W/System.err(23939): at android.widget.ExpandableListView.performItemClick(ExpandableListView.java:522)
05-01 22:09:06.215: W/System.err(23939): at android.widget.AbsListView$PerformClick.run(AbsListView.java:3328)
05-01 22:09:06.215: W/System.err(23939): at android.widget.AbsListView.onTouchEvent(AbsListView.java:4565)
05-01 22:09:06.215: W/System.err(23939): at android.view.View.dispatchTouchEvent(View.java:7500)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2285)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2013)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2291)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2028)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2291)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2028)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2291)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2028)
05-01 22:09:06.215: W/System.err(23939): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2291)
05-01 22:09:06.225: W/System.err(23939): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2028)
05-01 22:09:06.225: W/System.err(23939): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2240)
05-01 22:09:06.225: W/System.err(23939): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1535)
05-01 22:09:06.225: W/System.err(23939): at android.app.Activity.dispatchTouchEvent(Activity.java:2466)
05-01 22:09:06.225: W/System.err(23939): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2188)
05-01 22:09:06.225: W/System.err(23939): at android.view.View.dispatchPointerEvent(View.java:7689)
05-01 22:09:06.225: W/System.err(23939): at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3794)
05-01 22:09:06.225: W/System.err(23939): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3678)
05-01 22:09:06.225: W/System.err(23939): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4916)
05-01 22:09:06.225: W/System.err(23939): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4895)
05-01 22:09:06.225: W/System.err(23939): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4993)
05-01 22:09:06.225: W/System.err(23939): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
05-01 22:09:06.225: W/System.err(23939): at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
05-01 22:09:06.225: W/System.err(23939): at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:174)
05-01 22:09:06.225: W/System.err(23939): at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:4966)
05-01 22:09:06.225: W/System.err(23939): at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:5012)
05-01 22:09:06.225: W/System.err(23939): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791)
05-01 22:09:06.225: W/System.err(23939): at android.view.Choreographer.doCallbacks(Choreographer.java:591)
05-01 22:09:06.225: W/System.err(23939): at android.view.Choreographer.doFrame(Choreographer.java:559)
05-01 22:09:06.225: W/System.err(23939): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777)
05-01 22:09:06.225: W/System.err(23939): at android.os.Handler.handleCallback(Handler.java:725)
05-01 22:09:06.225: W/System.err(23939): at android.os.Handler.dispatchMessage(Handler.java:92)
05-01 22:09:06.225: W/System.err(23939): at android.os.Looper.loop(Looper.java:137)
05-01 22:09:06.235: W/System.err(23939): at android.app.ActivityThread.main(ActivityThread.java:5279)
05-01 22:09:06.235: W/System.err(23939): at java.lang.reflect.Method.invokeNative(Native Method)
05-01 22:09:06.235: W/System.err(23939): at java.lang.reflect.Method.invoke(Method.java:511)
05-01 22:09:06.235: W/System.err(23939): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
05-01 22:09:06.235: W/System.err(23939): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
05-01 22:09:06.235: W/System.err(23939): at dalvik.system.NativeStart.main(Native Method)
listAdapter = new ExpandableListAdapter (this, groupNames, questions);