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 [email protected]
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
-~----------~----~----~----~------~----~------~--~---