0

連絡先の値を持つスピナー、EditTextとSaveボタンの2つのアクティビティ(Novamensagem & Mensagenssalva)があります。Novamensagem.java連絡先を選択してテキストを書き込み、[保存]をクリックします。TEXTが保存され、Mensagenssalva.javaすべてのTEXTを開くと、書き込みと保存がListViewに表示されます。だから私はListViewがスピナーで選択した連絡先の名前を表示してからメッセージを表示する方法を知りたいです。例えば:

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で参照できます。ただし、Androidでは、整数の主キー列に名前を付ける必要があります...当面の間、キーワードを使用してエイリアスを作成するだけです。oid_rowid__idAS

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

ArrayAdapterの代わりにcustomAdapterを作成する必要があります。このリンクをチェックしてくださいhttp://devtut.wordpress.com/2011/06/09/custom-arrayadapter-for-a-listview-android/

于 2012-09-27T18:23:54.520 に答える