我想做什么:
我以为我可以使用ListView获得所需的功能(但也许这是一个非常糟糕的选择?)。我已经阅读了一些关于它们的内容,但仍然有一些问题。我知道ListView显示由适配器管理的数据。如果我有一个ArrayAdapter,Listview是否始终按照适配器中基础数组的顺序显示项目?所以要实现排序,我不得不以某种方式更改适配器中的数组?我已经读过,您可以使用SimpleAdapter连续创建多个属性,但SimpleAdapter使用的数据似乎是静态的。我怎样才能做到这一点?
提前致谢!
答案 0 :(得分:1)
创建自己的适配器,并在getView()
返回视图中匹配您的位置。例如,如果你有这样的数据:
id name
0 ccc
1 bbb
2 aaa
然后当您按id
排序并且listview想要位置1的行时,您将返回1 bbb
。但是,如果按名称升序排序,列表需要行#2,则返回0 ccc
。当然,你需要保持“映射”,但这是相当微不足道的。
答案 1 :(得分:1)
是的,ListView
将代表您ArrayList
或Vector
([]
)的排序方式。现在,如果您想为每一行提供多个属性,我建议您创建一个您选择的Object
,例如:class Person
,其中包含姓名,年龄,地址等。
然后创建一个包含Person
个对象的列表。然后在您将覆盖的getView
ArrayAdapter
中,您可以调用Person person = getItem(position);
,现在您可以在该特定行(位置)中保留该对象,并且可以执行任何操作想要那个Person
对象。