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.

希望这些对你有帮助。