一个活动,多个视图?

时间:2011-11-03 06:17:02

标签: android listview views android-intent

我想设计一个列表,其中包含按升序或降序对其进行排序的选项。我可以使用不同的意图来做到这一点。有没有办法在没有新意图的情况下做到这一点? 我想到的例子是在android中管理应用程序。按名称和大小排序在同一屏幕上。怎么做的?

编辑 - 我有一个说20项的清单。现在,我正在对列表项进行排序,只显示前5项。我想添加一个选项来显示底部的5个项目。我已经通过创建一个与prev类相同的新类完成了,顶部数组被底部数组替换。

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

通常使用ListView显示列表。 ListViews通常有一个与之关联的适配器。视图按适配器中存在的顺序列出。因此,要更改列表中元素的顺序,您只需设置一个新的适配器,其中元素按您的意愿排序(您也可以尝试更改现有适配器的元素顺序,但是我不知道是否可以这样做。

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

答案 2 :(得分:0)

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

  1. 必须有一个与listview相关联的适配器,在其中,您可以设置变量以监控订单模式,例如: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。

答案 3 :(得分:0)

ArrayAdapter类有一个内置的方法,可以通过“sort(比较器比较器)”进行排序,前提是你愿意去编写需要进行排序的比较器。我使用此方法对“就地”进行排序,而无需使用外部重新排序的列表重新加载适配器。

查看http://developer.android.com/reference/android/widget/ArrayAdapter.html

http://developer.android.com/reference/java/util/Comparator.html