0

チュートリアルに従って、データベース クラスとアクティビティ クラスを作成しました。これが私の活動クラスです:

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    datasource = new CommentsDataSource(this);
    datasource.open();

    List<Comment> values = datasource.getAllComments();

    // Use the SimpleCursorAdapter to show the
    // elements in a ListView
    ArrayAdapter<Comment> adapter = new ArrayAdapter<Comment>(this,
        android.R.layout.simple_list_item_1, values);
    setListAdapter(adapter);
  }

私のデータベースは少し異なりますが、ほとんどのものはチュートリアルと同じです。コメントは単なるセッター/ゲッター クラスです。今の問題は、リストにコメント名を表示したいのですが、「com.example.blabla.Comment@40dca9d0」を取得することです。コメントクラス全体をアダプターに渡しているためだと思います。名前を渡す正しい方法はどのようになりますか?

チュートリアルへのリンクは次のとおりです。そこで動作しているように見えるため、何かが欠けているに違いありませんが、正確にはわかりません

4

1 に答える 1

1
  // Will be used by the ArrayAdapter in the ListView
  @Override
  public String toString() {
    return comment;
  }

これをCommentクラスに追加したことを確認しましたか?
Javaでは、toString()のデフォルトの実装はClass @ Hashcodeであり、これは現在表示されているものです。したがって、コメントを返すことによってデフォルトの実装をオーバーライドする必要があります。

toString()がDOCS(parag2)で示されているため、呼び出されていません。

ただし、TextViewは参照されますが、配列内の各オブジェクトのtoString()で埋められます。カスタムオブジェクトのリストまたは配列を追加できます。オブジェクトのtoString()メソッドをオーバーライドして、リスト内のアイテムに表示されるテキストを決定します。

于 2013-01-21T03:18:07.130 に答える