Hi Stanley 
  Thx for your explanation, I met the same problem, could you tell us how 
you solve this issue? what are the changes u've made to make the codes work.

Thx
Leo 

On Tuesday, December 9, 2008 7:25:18 PM UTC-8, Stanley.lei wrote:
>
> 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

Reply via email to