【问题标题】:Android and loading a listview from a sqlite databaseAndroid 并从 sqlite 数据库加载列表视图
【发布时间】:2011-07-06 01:39:35
【问题描述】:

我正在创建一个应用程序,它使用数据访问对象类将值加载到可序列化对象中。

如何执行以下操作。

  • 从布局中找到 ListView 对象。
  • 将序列化列表加载到 ListView 中

我正在阅读以下文档http://developer.android.com/resources/tutorials/views/hello-listview.html

但是当我尝试遵循该代码但使用序列化列表时出现此错误:

cannot find symbol
  [javac] symbol  : constructor ArrayAdapter(

我的文件顶部也有这个

import android.widget.ArrayAdapter;

我正在尝试以 2.1 及更高版本为目标。

这是我的代码

http://pastie.org/1976415

【问题讨论】:

  • 请向我们展示您尝试使用 ArrayAdapter 的代码。
  • 这是我第一次尝试android,我学过ios,但这次不一样。
  • 我发现一个错误:你扩展了Activity,但你需要扩展ListActivity。这能解决问题吗?
  • 它现在可以编译为“setOnItemClickListener”,所以我可能只是缺少并包含在某个地方。我正在模拟器中尝试该应用程序,现在已将错误代码注释掉。

标签: java android android-listview


【解决方案1】:

在 ListView 中显示来自数据库的数据时,您应该使用 ArrayAdapter。请改用CursorAdapter(例如SimpleCursorAdapter)。使用游标和 CursorAdapter 您将获得更好的性能,因为项目仅在需要时才从数据库中读取(例如,用户滚动列表)。

当您使用 ArrayAdapter 时,您必须提前加载所有项目,这是不必要的,因为您可能不需要所有项目。因此,使用 Cursor 和 CursorAdapter 将为您提供更好的性能并减少内存使用量。

查看this blog post 获取教程。

【讨论】:

    【解决方案2】:

    您将Tickets 列表传递给<String> 适配器。尝试改变它:

    setListAdapter(new ArrayAdapter<Ticket>(this, R.layout.main.list, tickets));
    

    【讨论】:

    • 我现在让编译器抱怨“票证”。 “int 不能被取消引用”
    猜你喜欢
    • 1970-01-01
    • 2015-06-05
    • 2014-04-01
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    相关资源
    最近更新 更多