用户按下排序按钮后如何在列表视图中显示排序列表?

Posted

技术标签:

【中文标题】用户按下排序按钮后如何在列表视图中显示排序列表?【英文标题】:how to display the sorted list in listview after user presses the sort button? 【发布时间】:2018-02-27 09:55:38 【问题描述】:

我正在制作一个简单的 android 应用程序来测试排序功能,然后在我将要制作的主要项目中使用它。

我想知道,假设我在列表视图中的自定义对象和自定义 ArrayAdapter 的帮助下向用户显示了一个项目列表,并且我想在那里放置一个排序按钮,该按钮将在运行时根据选择对列表进行排序用户的(例如:按字母顺序,根据评级等)。

排序后如何向用户显示新列表。

我应该再次使用 setAdapter 方法还是有其他方法?

【问题讨论】:

使用notifyDatasetChanged() 可能吗? 对列表进行排序后,只需在适配器上调用 notifyDatasetChanged() 方法 【参考方案1】:

当你点击 排序按钮对列表进行排序在下一行写

yourAdapter.notifyDatasetChanged();

它将使用 更新(排序)数据更新您的列表。

【讨论】:

【参考方案2】:

首先,根据用户的选择对源数据进行排序(例如:按字母顺序、根据评级等) 例如:

List<String> mData; // your source data
// sort your data ascending order
Collections.sort(mData);
// use your adapter to update your ListView
mArrayAdapter.notifyDataSetChanged();

【讨论】:

是的,没错,创建新适配器是一种不好的做法,也浪费内存。告诉我它是否工作正常?【参考方案3】:

如果您在适配器中调用notifyDatasetChanged(),您的列表将在屏幕中以正确的顺序重新绘制。 :) 所以在您订购清单后,请致电adapter.notifyDatasetChanged()

【讨论】:

那么,在我处理完事件后对列表进行排序之后,然后调用 adapter.notifyDatasetChanged() 方法? 是的,这样适配器将使用新的排序列表重绘视图。请注意,您需要对之前传递给适配器的列表进行排序。

以上是关于用户按下排序按钮后如何在列表视图中显示排序列表?的主要内容,如果未能解决你的问题,请参考以下文章

排序JSONArray后,自定义列表视图没有改变?

如何根据作为输入的列表正确排序 QTreeView 中的列

在 jQuery Mobile 中单击按钮时对列表视图进行排序

按下按钮时更改列表视图背景颜色

在 Android 回收站视图中重新排序项目后,位置未更新

如何绑定列表视图