如何在ListView中显示2个数据库值?

时间:2012-09-27 17:32:29

标签: android database listview

我在Novamensagem & Mensagenssalva中有2个活动(Novamensagem.java)我有一个带有联系人值的微调器,一个EditText和一个Save按钮。我选择一个联系人并写一个文本并点击保存。 TEXT被保存,当我打开Mensagenssalva.java时,我编写并保存的所有TEXT都在ListView中。所以我想知道ListView如何显示我在Spinner中选择的联系人的名称,然后显示消息。例如:

Person's name
Message i have written.

// // EDIT

现在的错误是:强制在编译时关闭应用程序。代码现在:

 ListView user = (ListView) findViewById(R.id.lvShowContatos);
    //String = simple value ||| String[] = multiple values/columns
    String[] campos = new String[] {"nome", "telefone"};

    list = new ArrayList<String>();
    c = db.query( "contatos", campos, null, null, null, null, null);
    c.moveToFirst();

    if(c.getCount() > 0) {
        while(true) {
           list.add(c.getString(c.getColumnIndex("nome")).toString());
           list.add(c.getString(c.getColumnIndex("telefone")).toString());
           if(!c.moveToNext()) break;
        }
    }

     // the XML defined views which the data will be bound to
     int[] to = new int[] { R.id.nome_entry, R.id.telefone_entry };

     SimpleCursorAdapter myAdap = new SimpleCursorAdapter(this, R.layout.listview, c , campos, to, 0);

     user.setAdapter(myAdap);

LogCat错误: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mensagem/com.example.mensagem.Contato}: java.lang.IllegalArgumentException: column '_id' does not exist 所以事实是,它试图从我的数据库中提取“_id”,但我没有“_id”列/行。

2 个答案:

答案 0 :(得分:1)

发表评论

如我们所讨论的那样,通过使用SimpleCursorAdapter,您可以更好地控制应用程序,同时编写更少的代码行。

为了使用任何CursorAdapter,您的表必须具有_id INTEGER PRIMARY KEY列,而您没有。虽然我仍然建议您更改表格以添加此列,但有一个快速修复。如果未指定主键,则默认情况下所有SQLite表都会创建一个整数主键,您可以使用rowidoid_rowid_来引用它。但Android要求整数主键列的名称为_id ...在此期间,只需创建一个带有关键字AS的别名:

String[] campos = new String[] {"rowid as _id", "nome", "telefone"};

答案 1 :(得分:0)

您需要创建customAdapter而不是ArrayAdapter。查看此链接http://devtut.wordpress.com/2011/06/09/custom-arrayadapter-for-a-listview-android/