0

我想做的事:

  • 显示项目列表
  • 实际数据来自外部来源,并且可以更改
  • 每个项目可以有几个“列”。例如“类型”、“内容”、“日期”
  • 该列表应该例如可以按“类型”和“日期”排序。

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

提前致谢!

4

2 回答 2

1

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

id  name
0   ccc
1   bbb
2   aaa

然后,当您排序id并且 listview 想要位置 1 的行时,您返回1 bbb. 但是,如果您按名称升序排序,并且 list 想要第 2 行,那么您将返回0 ccc. 当然,您需要维护“映射”,但这相当微不足道。

于 2012-11-27T15:48:30.463 回答
1

是的,ListView将表示取决于您的ArrayListVector( []) 的排序方式。现在,如果您想为每一行设置多个属性,我建议您创建一个Object您选择的属性,例如:class Person它包含姓名、年龄、地址等。然后创建一个包含Person对象的列表。然后在你将覆盖getView的你的中,你可以调用,现在你在那个特定的行(位置)中持有那个对象,并且可以对那个对象做任何你想做的事情。ArrayAdapterPerson person = getItem(position);Person

于 2012-11-27T15:49:57.083 回答