Android Listview 上的 ArrayAdapter sort() 方法保持旧行数据不变
Android ArrayAdapter sort() method on Listview keeps old row data unchanged
我的 android 应用程序中有一个 ListView
可以进行排序。例如,当我单击名称时,它按名称排序。
代码如下:
private class MyListAdapter extends ArrayAdapter<Person> {
private final ArrayList<Person> people;
//.......
public void sort(SortBy x) {
switch (x) {
case NAME:
this.sort(new OrderByName());
sortedBy = "NAME";
break;
这是比较器:
private static class OrderByName implements Comparator<Person> {
@Override
public int compare(Person s1, Person s2) {
return s1.getName().compareTo(s2.getName());
}
}
当我单击 Name
按名称对列表视图进行排序时。我对列表进行了排序,但旧的数据行仍然存在。并与另一行相关联...
我是 Android 的新手......我真的需要一些帮助来调试这个问题。提前致谢!
对列表进行排序后,只需对 ArrayAdapter 对象使用 notifyDataSetChanged() 方法即可。它将刷新列表。我假设您不会创建多个 ArrayAdapter 对象。
//通知列表改变 adapter.notifyDataSetChanged();
首先检查您的 ArrayAdapter 是否有 it.If 中的最新值,它已更新为以下使用的最新值:
adapter.notifyDataSetChanged(); // notify the listview to update items in the list.
希望这些对你有帮助。
我的 android 应用程序中有一个 ListView
可以进行排序。例如,当我单击名称时,它按名称排序。
代码如下:
private class MyListAdapter extends ArrayAdapter<Person> {
private final ArrayList<Person> people;
//.......
public void sort(SortBy x) {
switch (x) {
case NAME:
this.sort(new OrderByName());
sortedBy = "NAME";
break;
这是比较器:
private static class OrderByName implements Comparator<Person> {
@Override
public int compare(Person s1, Person s2) {
return s1.getName().compareTo(s2.getName());
}
}
当我单击 Name
按名称对列表视图进行排序时。我对列表进行了排序,但旧的数据行仍然存在。并与另一行相关联...
我是 Android 的新手......我真的需要一些帮助来调试这个问题。提前致谢!
对列表进行排序后,只需对 ArrayAdapter 对象使用 notifyDataSetChanged() 方法即可。它将刷新列表。我假设您不会创建多个 ArrayAdapter 对象。
//通知列表改变 adapter.notifyDataSetChanged();
首先检查您的 ArrayAdapter 是否有 it.If 中的最新值,它已更新为以下使用的最新值:
adapter.notifyDataSetChanged(); // notify the listview to update items in the list.
希望这些对你有帮助。