再次你好(抱歉)
我很累从sqlitle填充微调器,它工作得很好,但我的表看起来像:
_id |名称|时间|。。。。
_id:是自增量数字,始终唯一Name:是人名,在此表中多行重复
我想把这一行的所有名称都放在微调器中,但不能重复。我现在是怎么做的:
private void updateSpiner(){Spinner nameSpinner=(Spinner)findViewById(R.id.spinMena);
Cursor nameCursor = db.getNames();
startManagingCursor(nameCursor);
String[] from = new String[]{"Name"};
int[] to = new int[]{android.R.id.text1};
SimpleCursorAdapter nameAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, nameCursor, from, to);
nameSpinner.setAdapter(nameAdapter);
}
以下是我获取数据的方法:
public Cursor getNames(){
final String KEY_TITLE = "Name";
final String KEY_ROWID = "_id";
return database.query("plan", new String[] {KEY_ROWID, KEY_TITLE}, null, null, null, null, null);
}
有人能向我解释一下为什么我需要获得同样的_id行吗?我现在还在使用Java,我不明白为什么我需要它,除非如果我不这样做,它会抱怨没有_id。
但是在第一个方法中没有使用它,我只从中获得Names…因为_id,我不能在查询DISTINCT=true中使用,因为它仍然返回所有行,因为_id对每一行都是唯一的。。
有人能帮我把它裹起来吗?我不想做单独的桌子什么的。。
谢谢,Vlad
在我的情况下,我无法使用SimpleCursorAdapter完成这项工作,我必须使用ArrayAdapter而不是SimpleCursorAdapter,并在从查询中删除ID字段后在查询中添加DISTINCT子句。这里是讨论simplecursor适配器所需的Why_id字段的链接
在我看来,您的表不是理想的,不适合Spinner输入。您需要规范化数据库,并创建一个类似nameId | name
的新表。然后在"数据"表中,您将得到dataId | nameId | time | ...
。然后,您只需使用新的nameId | name
表中的数据加载Spinner。
也许您可以在sqlite查询中使用DISTINCT:SELECT手动