Используя com.example.android.notepad и ExpandableList2.java из com.example.android.apis.view, я написал простое приложение, которое содержит провайдера контента, обслуживающего две таблицы в базе данных sqlite, и операцию отображения, которая используетмой подкласс ExpandableListActivity.Я использую свои собственные макеты для ExpandableList, а также групповые и дочерние макеты.Содержимое базы данных отображается правильно в процессе отображения, а группы сворачиваются и расширяются.Однако если я разверну группу и щелкну по дочернему элементу, чтобы выбрать ее, я получу следующий дамп стека:
Thread [<3> main] (Приостановлено (исключение IllegalStateException))CursorWindow.getLong (int, int) строка: 331SQLiteCursor (AbstractWindowedCursor) .getLong (int) строка: 108ContentResolver $ CursorWrapperInner (CursorWrapper) .getLong (int) строка: 127CursorTreeAdapter $ MyCursorHelper.getId (int) строка: 435SongsList $ SetListExpandableListAdapter (CursorTreeAdapter) .getChildId (int, int) строка: 172ExpandableListConnector.getItemId (int) строка: 428AbsListView $ PerformClick.run () строка: 1635ViewRoot (обработчик) .handleCallback (сообщение) строка: 587ViewRoot (Обработчик) .dispatchMessage (Сообщение) строка: 92Looper.loop () строка: 123ActivityThread.main (String []) строка: 4203Method.invokeNative (Object, Object [], Class, Class [], Class, int, boolean) Строка: недоступно [собственный метод]Method.invoke (Object, Object ...) строка: 521ZygoteInit $ MethodAndArgsCaller.run () строка: 791ZygoteInit.main (String []) строка: 549NativeStart.main (String []) строка: недоступно [собственный метод]
Мой SimpleCursorTreeAdapter:
public class SetListExpandableListAdapter extends
SimpleCursorTreeAdapter {
public SetListExpandableListAdapter(Context context, Cursor cursor, int groupLayout,
int childLayout, String[] groupFrom, int[] groupTo, String[] childrenFrom,
int[] childrenTo)
{ super(context, cursor, groupLayout, groupFrom, groupTo,
childLayout, childrenFrom, childrenTo);
}
@Override
protected Cursor getChildrenCursor(Cursor setListCursor) {
Uri.Builder builder =
SetListDefs.Songs.CONTENT_URI.buildUpon();
Uri songsUri = builder.build();
return managedQuery(songsUri, mSongProjection,
"SETLIST = '" +
Long.toString(setListCursor.getLong(mSetListIdColumnIndex)) + "'",
null, null);
}
}
Мне еще не удалось установить точку останова в моем коде, которая достигается до того, как будет выдано исключение IllegalStateException.Мне кажется, что я делаю то, что делают примеры, но, видимо, я кое-что упускаю.
Некоторая помощь будет принята с благодарностью.