Listview上的Android ArrayAdapter sort()方法保持旧行数据不变
在我的android应用程序中,我有一个进行排序的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)
列表视图。例如,当我单击“名称”时,它会按名称排序
代码如下:
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.
希望这些对你有帮助