用户按下排序按钮后如何在列表视图中显示排序列表?
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() 方法? 是的,这样适配器将使用新的排序列表重绘视图。请注意,您需要对之前传递给适配器的列表进行排序。以上是关于用户按下排序按钮后如何在列表视图中显示排序列表?的主要内容,如果未能解决你的问题,请参考以下文章