Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Listview上的Android ArrayAdapter sort()方法保持旧行数据不变_Android_Sorting_Listview_Android Arrayadapter - Fatal编程技术网

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

Listview上的Android ArrayAdapter sort()方法保持旧行数据不变,android,sorting,listview,android-arrayadapter,Android,Sorting,Listview,Android Arrayadapter,在我的android应用程序中,我有一个进行排序的列表视图。例如,当我单击“名称”时,它会按名称排序 代码如下: private class MyListAdapter extends ArrayAdapter<Person> { private final ArrayList<Person> people; //....... public void sort(SortBy x) { switch (x)

在我的android应用程序中,我有一个进行排序的
列表视图。例如,当我单击“名称”时,它会按名称排序

代码如下:

    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());
    }
}
私有类MyListAdapter扩展了ArrayAdapter{
私人最终ArrayList人;
//.......
公共无效排序(按x排序){
开关(x){
案例名称:
this.sort(新OrderByName());
sortedBy=“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());
    }
}
私有静态类OrderByName实现了Comparator{
@凌驾
公共整数比较(人员s1、人员s2){
返回s1.getName().compareTo(s2.getName());
}
}
当我单击
Name
按名称对listview排序时..我对列表进行了排序,但旧的数据行仍然保留..并与另一行关联。。。 我是Android新手…我真的需要一些关于调试这个问题的帮助。提前谢谢



对列表进行排序后,只需对ArrayAdapter对象使用notifyDataSetChanged()方法。它将刷新列表。我假设您创建的ArrayAdapter对象不超过一个


//通知列表已更改适配器。notifyDataSetChanged();

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

adapter.notifyDataSetChanged(); // notify the listview to update items in the list.
希望这些对你有帮助