从sql填充微调器并使结果唯一



再次你好(抱歉)

我很累从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手动

相关内容

  • 没有找到相关文章

最新更新