使用ArrayAdapter创建多列布局

时间:2011-07-14 17:42:25

标签: android android-arrayadapter simpleadapter

我一直试图解决这个问题一段时间,并且已经耗尽了我能想到的所有不同的Google搜索。我是Android的初学者,但了解大多数基础知识(我认为)。无论如何,我试图以多列布局电子表格样式显示数据列表。我正在使用ListView,因为我需要用户能够点击一行来更详细地查看数据,因为只有这么多才能适合一行。我使用SimpleAdapter完美地工作,但由于数据量有时可能很大,最多500个条目,我想转换到Lazy Loader系统,这样用户就不必盯着黑屏20秒一切都加载。我想我可以使用Lazy Loader部分进行管理,但我无法弄清楚如何从我的多列格式SimpleAdapter切换到所有Lazy Loader示例使用的ArrayAdapter。

以下是我的SimpleAdapter代码示例:

SimpleAdapter adapter = new SimpleAdapter(this,fillMaps,R.layout.grid_item,from,to);

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

提前致谢!

2 个答案:

答案 0 :(得分:1)

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

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

让延迟加载工作:

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

答案 1 :(得分:0)

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