0

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

Person's name
Message i have written.

//编辑//

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

 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”列/行。

4

2 回答 2

1

从评论发布

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

为了使用任何 CursorAdapter,您的表必须有一个_id INTEGER PRIMARY KEY您没有的列。虽然我仍然建议更改您的表格以添加此列,但有一个快速修复。如果你不指定主键,所有 SQLite 表默认创建一个整数主键,你可以用rowid,oid或引用它_rowid_。但是Android要求整数主键列被命名_id......同时只需使用关键字创建一个别名AS

String[] campos = new String[] {"rowid as _id", "nome", "telefone"};
于 2012-09-28T19:52:59.043 回答
0

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

于 2012-09-27T18:23:54.520 回答