如何在ListView中显示动态数据并进行排序

时间:2012-11-27 15:41:19

标签: android android-listview

我想做什么:

  • 显示项目列表
  • 实际数据来自外部来源,可以更改
  • 每个项目可以有多个“列”。例如。 “type”,“content”,“date”
  • 列表应该是例如可以通过“类型”和“日期”进行排序。

我以为我可以使用ListView获得所需的功能(但也许这是一个非常糟糕的选择?)。我已经阅读了一些关于它们的内容,但仍然有一些问题。我知道ListView显示由适配器管理的数据。如果我有一个ArrayAdapter,Listview是否始终按照适配器中基础数组的顺序显示项目?所以要实现排序,我不得不以某种方式更改适配器中的数组?我已经读过,您可以使用SimpleAdapter连续创建多个属性,但SimpleAdapter使用的数据似乎是静态的。我怎样才能做到这一点?

提前致谢!

2 个答案:

答案 0 :(得分:1)

创建自己的适配器,并在getView()返回视图中匹配您的位置。例如,如果你有这样的数据:

id  name
0   ccc
1   bbb
2   aaa

然后当您按id排序并且listview想要位置1的行时,您将返回1 bbb。但是,如果按名称升序排序,列表需要行#2,则返回0 ccc。当然,你需要保持“映射”,但这是相当微不足道的。

答案 1 :(得分:1)

是的,ListView将代表您ArrayListVector[])的排序方式。现在,如果您想为每一行提供多个属性,我建议您创建一个您选择的Object,例如:class Person,其中包含姓名,年龄,地址等。 然后创建一个包含Person个对象的列表。然后在您将覆盖的getView ArrayAdapter中,您可以调用Person person = getItem(position);,现在您可以在该特定行(位置)中保留该对象,并且可以执行任何操作想要那个Person对象。