Hi all,

I'm developing an application like management system, and I used the
widget ExpandedListView as the display view. Instead of connecting it
to sqlite database directly, I created two list as the dataset. The
detailed code is as following list:

private List<Map<String, String>>    mGroupType = new
ArrayList<Map<String, String>>();
private List<List<Map<String, String>>> mGroupInfo = new
ArrayList<List<Map<String, String>>>();

private void showGroupView() {
        // add layout to the view
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);
        LayoutParams para = new LayoutParams(LayoutParams.FILL_PARENT,
                        LayoutParams.FILL_PARENT);
        setContentView(layout, para);

        // add expanded list view to layout
        mListView = new ExpandableListView(this);
        LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
        layout.addView(mListView, params);

        // set list view adapter
  mListAdapter = new SimpleExpandableListAdapter(
          this,
          mGroupType,
          android.R.layout.simple_expandable_list_item_1,
          new String[] {"GROUP_TYPE"},
          new int[] { android.R.id.text1 },
          mGroupInfo,
          android.R.layout.simple_expandable_list_item_2,
          new String[] {"GROUP_INFO" },
          new int[] { android.R.id.text1 }
          );
  mListView.setAdapter(mListAdapter);
  mListView.setOnChildClickListener(new OnChildClickListener() {

      public boolean onChildClick(ExpandableListView parent, View v,
              int groupPosition, int childPosition, long id) {
          return editGroup(groupPosition, childPosition, id);
      }

  });
}

private void refreshGroupData() {
        // fresh mGroupType and mGroupInfo
        mGroupType.clear();
        mGroupInfo.clear();

        fetchAllGroup(mGroupType, mGroupInfo);

        ((BaseExpandableListAdapter) mListAdapter).notifyDataSetChanged();
}

When I removed a item in the list, the method refreshGroupData() will
be called. Everything is ok except that when I tried to remove the
last item in the list, an exception was threw with the following trace
info:

12-10 11:18:49.738: ERROR/AndroidRuntime(194): Uncaught handler:
thread main exiting due to uncaught exception
12-10 11:18:49.997: ERROR/AndroidRuntime(194):
java.lang.IndexOutOfBoundsException: Invalid location 0, size is 0
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
java.util.ArrayList.get(ArrayList.java:350)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
android.widget.SimpleExpandableListAdapter.getChildrenCount
(SimpleExpandableListAdapter.java:255)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
android.widget.ExpandableListConnector.refreshExpGroupMetadataList
(ExpandableListConnector.java:489)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
android.widget.ExpandableListConnector.access$000
(ExpandableListConnector.java:49)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
android.widget.ExpandableListConnector$MyDataSetObserver.onChanged
(ExpandableListConnector.java:684)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
android.database.DataSetObservable.notifyChanged
(DataSetObservable.java:29)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
android.widget.BaseExpandableListAdapter.notifyDataSetChanged
(BaseExpandableListAdapter.java:56)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
com.ourdroid.account.GroupSetting.refreshGroupData(GroupSetting.java:
50)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
com.ourdroid.account.GroupSetting.deleteGroup(GroupSetting.java:135)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
com.ourdroid.account.GroupSetting.onOptionsItemSelected
(GroupSetting.java:109)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
android.app.Activity.onMenuItemSelected(Activity.java:1964)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected
(PhoneWindow.java:708)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:
138)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
com.android.internal.view.menu.MenuBuilder.performItemAction
(MenuBuilder.java:804)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
com.android.internal.view.menu.IconMenuView.invokeItem
(IconMenuView.java:435)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
com.android.internal.view.menu.IconMenuItemView.performClick
(IconMenuItemView.java:120)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
android.view.View.onTouchEvent(View.java:3523)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
android.widget.TextView.onTouchEvent(TextView.java:4410)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
android.view.View.dispatchTouchEvent(View.java:3178)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:857)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:857)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
com.android.internal.policy.impl.PhoneWindow
$DecorView.dispatchTouchEvent(PhoneWindow.java:1545)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
android.view.ViewRoot.handleMessage(ViewRoot.java:1140)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
android.os.Handler.dispatchMessage(Handler.java:88)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
android.os.Looper.loop(Looper.java:123)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
android.app.ActivityThread.main(ActivityThread.java:3742)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
java.lang.reflect.Method.invokeNative(Native Method)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
java.lang.reflect.Method.invoke(Method.java:515)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
(ZygoteInit.java:739)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:497)
12-10 11:18:49.997: ERROR/AndroidRuntime(194):     at
dalvik.system.NativeStart.main(Native Method)

Could anyone help me on this issue?

Any help will be appreciated.

Stanley

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to