У меня проблемы с ExpandableListView. Я хочу, чтобы каждая группа была из столбца «связь», которая не уникальна, но я хочу, чтобы группы были уникальными (т.е. каждое значение «связь» должно иметь только одну группу). Каждое значение в группе имеет данные в других столбцах, которые должны отображаться. Проблема в том, что я могу либо использовать оператор SQL DISTINCT с одним столбцом (и тогда getChildrenCursor() выдает исключение IllegalStateException), либо не использовать оператор DISTINCT и дублировать каждую группу.
Может ли кто-нибудь предложить исправление для этого?
public void onCreate(Bundle saved) {
super.onCreate(saved);
DatabaseHelper dh = new DatabaseHelper(this);
dh.openDataBase();
db = dh.getReadableDatabase();
String query = "SELECT DISTINCT bond FROM spectro";
Cursor c = db.rawQuery(query, null); //throws exception when group opened
//Cursor c = db.query("spectro", new String[] { "_id", "name", "bond", ir },
//null, null, null, null, null) - gives duplicate groups
ExpandableListAdapter a = new IRCursorAdapter (this,
c, android.R.layout.simple_expandable_list_item_1, new String[] { "bond" },
new int[] { android.R.id.text1 }, R.layout.row_doubleend,
new String[] { "name", "ir" }, new int[] { R.id.double_item1, R.id.double_item2 });
this.setListAdapter(a);
}
protected class IRCursorAdapter extends SimpleCursorTreeAdapter {
public IRCursorAdapter(Context context, Cursor cursor, int groupLayout,
String[] groupFrom, int[] groupTo, int childLayout,
String[] childFrom, int[] childTo) {
super(context, cursor, groupLayout, groupFrom, groupTo, childLayout, childFrom,
childTo);
}
@Override
protected Cursor getChildrenCursor(Cursor groupCursor) {
Cursor c = db.query("spectro", new String[] {"_id", "name", "bond", "ir"},
"bond=?", new String[] { groupCursor.getString(0) }, null, null, null);
startManagingCursor(c);
return c;
}
};
вот как выглядит моя таблица - связь - это то, что я хочу сделать уникальным:
_id | имя | облигация | ир
1 | имя 1 | облигация 1 | 1
2 | имя 2 | облигация 1 | 2
3 | имя 3 | связь 2 | 3
4 | имя 4 | связь 3 | 4
извините, если это не особенно ясно, но спасибо за вашу помощь!