2011-11-03 99 views
0

我想要设计一个带有选项的列表,以升序或降序排序。我可以用不同的意图来做到这一点。有没有办法做到这一点,而没有新的意图? 我想到的例子是在Android中管理应用程序。按名称和大小进行排序发生在同一屏幕上。这是如何完成的?一个活动,多个视图?

编辑 - 我有一个说20项的列表。现在,我正在整理列表项目并只显示前5个项目。我想添加一个选项来显示底部的5个项目。我已经通过创建一个新的类exactle与prev类相同,顶层数组替换为底层数组。

+1

我想,你可以改变一个列表的编程顺序(而不是在layout.xml指定它),不是吗? – lc2817

+0

我想你现在正在使用两种不同的活动来按不同的顺序显示列表,而你想要的是在一个Activity.Right中切换listview的顺序吗? – Huang

+0

您可以修改您的适配器以对数据进行排序。我认为ArrayAdapter支持排序功能。发布一些代码,我们可以基于此进行更新。 – Karthik

回答

0

通常情况下,列表使用ListView显示。 ListViews通常有一个适配器与它们相关联。视图按它们在适配器中存在的顺序列出。因此,要更改列表中元素的顺序,您只需为其设置一个新适配器,并根据需要对元素进行排序(您也可以尝试更改现有适配器元素的顺序,但我不知道是否可以做到)。

您可以看到ListView Hello World Example以更好地了解ListViews

1

在将其设置到适配器中之前,您可以重新对基础数据结构进行排序。

+0

这就是我最近完成的工作 - 对列表和呼叫适配器进行排序。 notifyDataSetChanged()(或类似的 - 不靠近pc atm)。请记住不要创建新的列表,因为适配器仍然会引用原始的列表。 – barry

0

Umang,我现在手边没有日食,我只想表达我的思路来解决你的问题。请自行编写代码并进行测试。

  1. 都必须有你的列表视图关联的适配器,它里面,你可以设置一个变量来箴言报的顺序模式,如:private int mode;
  2. 内部适配器的getView()方法的基础上,mode ,根据需要返回物品。 我认为你已完成上述步骤,因为您可以更改订单。
  3. 在第一个活动中,您可以为用户设置一些事件来改变订单的顺序,即通过菜单。所以你重写public boolean onCreateOptionsMenu (Menu menu)
  4. 在对应的public boolean onOptionsItemSelected (MenuItem item)中,您根据用户选择的项目索引设置mode值。
  5. 致电adapter.notifyDataSetChanged()通知系统listView的数据已更改。
  6. 请致电listView.invalidate()以显示新的ListView。