2012-11-27 45 views
0

我想做什么显示ListView中动态数据:如何与订货

  • 显示项目
  • 实际数据从外部源的列表,并且可以改变
  • 每个项目都有几个“专栏”。例如。 “type”,“content”,“date”
  • 该列表应该例如可以按“类型”和“日期”进行排序。

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

在此先感谢!

回答

1

是的,ListView将取决于您对ArrayListVector[])的排序方式。现在,如果你想为每一行有几个属性,我会建议你创建一个你选择的Object,例如:class Person它需要名称,年龄,地址等等。 然后创建一个需要Person对象的列表。然后,在ArrayAdapterArrayAdapterArrayAdapter中,您将覆盖,您可以调用Person person = getItem(position);,现在您可以在该特定的行(位置)中保留该对象,并且可以对该对象执行任何您想要的操作。

1

创建您自己的适配器,并在getView()返回与您的位置相匹配的视图。你按id和ListView希望排在位置1时,返回1 bbb

id name 
0 ccc 
1 bbb 
2 aaa 

则:举例来说,如果你有这样的数据。但是,如果按名称升序排序,并且列表需要第2行,则返回0 ccc。当然,你需要保持“映射”,但这是相当微不足道的。

+0

所以getView被ListView调用,如果它想显示一行?我刚刚注意到,ArrayAdapter有一个“排序”方法,我想这也可以是有用的。 – user1809923

+0

是的,您也可以对源数据进行排序。无论哪种方式都可以做到这一点。 –