我收到以下异常:
java.lang.IllegalStateException: get field slot from row 0 col -1 failed
当我在setAdapter()
上致电ExpandableListView
时。有人可以帮我解决这个问题吗? (我已经浪费了2天:()
Cursor mCursor = tasksListCursor();
Log.i("ChronicleTaskList", "rowcount: "+mCursor.getCount());
startManagingCursor(mCursor);
boolean flag = mCursor.moveToFirst();
while (flag) { // This loop executes fine.
long id = mCursor.getLong(mCursor.getColumnIndexOrThrow(ChronicleDb.KEY_ID));
String name = mCursor.getString(mCursor.getColumnIndexOrThrow(ChronicleDb.KEY_NAME));
long from = mCursor.getLong(mCursor.getColumnIndexOrThrow(ChronicleDb.KEY_FROM));
long to = mCursor.getLong(mCursor.getColumnIndexOrThrow(ChronicleDb.KEY_TO));
Log.i("ChronicleTaskList", id + ", "+ name+ ", "+ from+ ", "+to);
flag = mCursor.moveToNext();
}
String[] grpFromCols = { ChronicleDb.KEY_NAME};
int[] grpToVals = { R.id.cGroupRowTextName };
String[] fromCols = { TasksDbAdapter.KEY_TODODATE,
TasksDbAdapter.KEY_NAME };
int[] toVals = { R.id.textViewDate2, R.id.taskRowTextTask };
ChronicleTreeListAdapterSimple adapter = new ChronicleTreeListAdapterSimple(this, mCursor,
R.layout.c_group_row, grpFromCols, grpToVals,
R.layout.task_row2, fromCols, toVals, true);
expandableListView.setAdapter(adapter);
最后一行抛出异常。
适配器看起来像这样:
public class ChronicleTreeListAdapterSimple extends SimpleCursorTreeAdapter {
protected static String TAG = "ChronicleTreeListAdapter";
public ChronicleTreeListAdapterSimple(
ChronicleTaskList context, Cursor cursor,
int groupLayout, String[] groupFrom, int[] groupTo,
int childLayout, String[] childFrom, int[] childTo,
boolean showGroupName) {
super(context, cursor, groupLayout, groupFrom, groupTo, childLayout, childFrom, childTo);
taskList = context;
}
答案 0 :(得分:1)
现在已经解决了。
问题在于表的主键列,即
"id"
。所以我把它改成了
"_id"
它就像一个魅力。
这个链接给了我一些关于修复的提示: https://groups.google.com/forum/?fromgroups=#!topic/android-developers/Nk-lc9shUgY