Java 需要帮助解决ExpandableListView中的IndexOutOfBoundsException

Java 需要帮助解决ExpandableListView中的IndexOutOfBoundsException,java,android,arraylist,Java,Android,Arraylist,我一直在谷歌上搜索一些类似的问题,但我就是不知道是什么导致了我的错误(我知道错误在哪里,但我不知道如何以代码方式解决)。我知道我可能会因此受到一些批评,但如果有人能帮我解决代码问题,我将非常感激 我的ExpandableListViewAdapter: public class ExpandableListAdapter extends BaseExpandableListAdapter { private Context context; private List<St

我一直在谷歌上搜索一些类似的问题,但我就是不知道是什么导致了我的错误(我知道错误在哪里,但我不知道如何以代码方式解决)。我知道我可能会因此受到一些批评,但如果有人能帮我解决代码问题,我将非常感激

我的ExpandableListViewAdapter:

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);