Listview上的Android ArrayAdapter sort()方法保持旧行数据不变

时间:2017-03-25 07:12:44

标签: android sorting listview android-arrayadapter

我的Android应用中有ListView进行排序。例如,当我单击Name时,它按名称排序。

以下是代码:

    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很新...我真的需要一些帮助来调试这个问题。在此先感谢!

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

对列表进行排序后,只需对ArrayAdapter对象使用notifyDataSetChanged()方法即可。它会刷新列表。我假设您没有创建多个ArrayAdapter对象。

//通知列表已更改adapter.notifyDataSetChanged();

答案 1 :(得分:0)

首先检查您的ArrayAdapter中是否包含最新值。如果使用下面使用的最新值进行更新:

adapter.notifyDataSetChanged(); // notify the listview to update items in the list.

希望这些可以帮到你。