我想要设计一个带有选项的列表,以升序或降序排序。我可以用不同的意图来做到这一点。有没有办法做到这一点,而没有新的意图? 我想到的例子是在Android中管理应用程序。按名称和大小进行排序发生在同一屏幕上。这是如何完成的?一个活动,多个视图?
编辑 - 我有一个说20项的列表。现在,我正在整理列表项目并只显示前5个项目。我想添加一个选项来显示底部的5个项目。我已经通过创建一个新的类exactle与prev类相同,顶层数组替换为底层数组。
我想要设计一个带有选项的列表,以升序或降序排序。我可以用不同的意图来做到这一点。有没有办法做到这一点,而没有新的意图? 我想到的例子是在Android中管理应用程序。按名称和大小进行排序发生在同一屏幕上。这是如何完成的?一个活动,多个视图?
编辑 - 我有一个说20项的列表。现在,我正在整理列表项目并只显示前5个项目。我想添加一个选项来显示底部的5个项目。我已经通过创建一个新的类exactle与prev类相同,顶层数组替换为底层数组。
通常情况下,列表使用ListView
显示。 ListViews
通常有一个适配器与它们相关联。视图按它们在适配器中存在的顺序列出。因此,要更改列表中元素的顺序,您只需为其设置一个新适配器,并根据需要对元素进行排序(您也可以尝试更改现有适配器元素的顺序,但我不知道是否可以做到)。
您可以看到ListView Hello World Example以更好地了解ListViews
。
在将其设置到适配器中之前,您可以重新对基础数据结构进行排序。
这就是我最近完成的工作 - 对列表和呼叫适配器进行排序。 notifyDataSetChanged()(或类似的 - 不靠近pc atm)。请记住不要创建新的列表,因为适配器仍然会引用原始的列表。 – barry
Umang,我现在手边没有日食,我只想表达我的思路来解决你的问题。请自行编写代码并进行测试。
private int mode;
mode
,根据需要返回物品。 我认为你已完成上述步骤,因为您可以更改订单。public boolean onCreateOptionsMenu (Menu menu)
。public boolean onOptionsItemSelected (MenuItem item)
中,您根据用户选择的项目索引设置mode
值。adapter.notifyDataSetChanged()
通知系统listView的数据已更改。listView.invalidate()
以显示新的ListView。ArrayAdapter类具有通过“sort(比较比较器)”进行排序的内置方法,前提是您愿意去编写需要进行排序的比较器。我使用此方法对“适当位置”进行排序,而无需使用外部重新排序的列表重新加载适配器。
退房http://developer.android.com/reference/android/widget/ArrayAdapter.html
和http://developer.android.com/reference/java/util/Comparator.html
我想,你可以改变一个列表的编程顺序(而不是在layout.xml指定它),不是吗? – lc2817
我想你现在正在使用两种不同的活动来按不同的顺序显示列表,而你想要的是在一个Activity.Right中切换listview的顺序吗? – Huang
您可以修改您的适配器以对数据进行排序。我认为ArrayAdapter支持排序功能。发布一些代码,我们可以基于此进行更新。 – Karthik