我在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”列/行。
答案 0 :(得分:1)
发表评论
如我们所讨论的那样,通过使用SimpleCursorAdapter,您可以更好地控制应用程序,同时编写更少的代码行。
为了使用任何CursorAdapter,您的表必须具有_id INTEGER PRIMARY KEY
列,而您没有。虽然我仍然建议您更改表格以添加此列,但有一个快速修复。如果未指定主键,则默认情况下所有SQLite表都会创建一个整数主键,您可以使用rowid
,oid
或_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/