2

我一直在尝试解决这个问题一段时间,并且已经用尽了我能想到的所有不同的谷歌搜索。我是 Android 的初学者,但了解大部分基础知识(我认为)。无论如何,我正在尝试以多列布局电子表格样式显示数据列表。我为此使用 ListView,因为我需要用户能够单击一行以更详细地查看数据,因为只有这么多可以放在一行中。我使用 SimpleAdapter 让它完美运行,但由于数据量有时可能很大,最多 500 个条目,我想切换到延迟加载器系统,这样用户就不必盯着黑屏 20 秒当一切都加载时。我想我可以使用 Lazy Loader 部分进行管理,但我不能

这是我的 SimpleAdapter 代码的示例:

SimpleAdapter 适配器 = new SimpleAdapter(this, fillMaps, R.layout.grid_item, from, to);

fillMaps 是要插入的 HashMap 列表。'grid_item' 是条目插入的布局。'from' 是要使用的列名数组(或者 HashMap 中的键)。'to' 是一个 TextView 项的数组,将填充在 'grid_item' 中。知道如何将其转换为 ArrayAdapter 吗?或者如何使用 SimpleAdapter 进行延迟加载?

提前致谢!

4

2 回答 2

1

为了为其他人解决此问题,这是我为使其完美运行所做的工作:

  • 创建了我自己的名为 Entry 的类,它只包含行的字符串
  • 创建了一个扩展 ArrayAdapter 的自定义适配器。对于构造函数,我将一个 Entry 类型的 ArrayList 传递给它。
  • 创建 ViewHolder 以提高 UI 效率
  • 膨胀行布局 xml,然后将其添加到我的列表视图中

要使延迟加载工作:

  • 在我的自定义适配器中添加了一个方法,该方法会将 Entry 对象的新 ArrayList 附加到我在适配器中已有的 ArrayList
  • 创建了一个 onScrollListener 并从一些调试测试中发现,如果顶部可见项加上剩余条目等于总条目,那么我一直滚动到底部
  • 一旦检测到底部,我会调用我的 fetch 方法来检索另外 30 个条目,使用我创建的 add 方法添加这些条目,然后使用 ArrayAdapter 的 notifyDataSetChanged() 方法来显示新加载的项目
于 2011-07-22T15:35:47.393 回答
0

只需编写自己的适配器。Activity在您的ListView扩展中创建一个私有类BaseAdapter。填写抽象方法并根据需要显示数据。显然很有用SimpleAdapter,你会从你自己的适配器中获得更多的牵引力,而且它们真的不难写。

于 2011-07-14T17:47:55.217 回答