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);
  }

我的数据库有点不同,但大部分内容与教程中的相同。评论只是一个 setter/getter 类。现在的问题是,在我的列表中我想显示评论名称,但我得到“com.example.blabla.Comment@40dca9d0”。我认为这是因为我将整个评论类传递给适配器。传递名称的正确方法是什么?

这是教程的链接,我一定遗漏了一些东西,因为它似乎在那里工作,但我不知道到底是什么:http ://www.vogella.com/articles/AndroidSQLite/article.html#sqliteoverview_sqliteopenhelper

4

1 回答 1

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

你确定你把这个添加到你的评论类了吗?
在 java 中,toString() 的默认实现是 Class@Hashcode,这是您当前所显示的,因此您需要通过返回注释来覆盖默认实现。

您看不到 toString() 被调用,因为它在DOCS (parag2)中说

然而,TextView 被引用,它将被数组中每个对象的 toString() 填充。您可以添加自定义对象的列表或数组。覆盖对象的 toString() 方法以确定将为列表中的项目显示哪些文本。

于 2013-01-21T03:18:07.130 回答