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 -~----------~----~----~----~------~----~------~--~---