gpt4 book ai didi

android - Recyclerview - 搜索 'Arraylist' 后排序不起作用

转载 作者:行者123 更新时间:2023-11-29 14:43:59 24 4
gpt4 key购买 nike

我在一个带有“recyclerview”的应用程序中工作,我成功地在其中实现了搜索排序

每当我在搜索列表之前对列表进行排序时,排序都会起作用。但是在搜索了一些东西之后,排序不起作用。我调试了很多,但没能找到我的代码中的错误。

用于排序:

private void sortArrayList() {
Collections.sort(booksList, new Comparator<BookPojo>() {
@Override
public int compare(BookPojo o1, BookPojo o2) {
return o1.getBookname().compareTo(o2.getBookname());
}
});

mAdapter.notifyDataSetChanged();
}

private void reversesortArrayList() {
Collections.sort(booksList, new Comparator<BookPojo >() {
@Override
public int compare(BookPojo o1, BookPojo o2) {
return o2.getBookname().compareTo(o1.getBookname());
}
});
mAdapter.notifyDataSetChanged();
}

用于搜索,

void filter(String text) {
ArrayList<BookPojo > temp = new ArrayList();
for (BookPojo d : booksList) {

if (d.getBookname().toLowerCase().contains(text)) {
temp.add(d);
}
}

mAdapter.filterList(temp);
}

在适配器中,

public void filterList(ArrayList<BookPojo> booklist) {
this.booklist= booklist;
notifyDataSetChanged();
}

在通过“edittext”搜索“recyclerview”之前,排序工作正常。但是,搜索书名后,我的排序失败。

方法总是在按钮点击时调用。

任何帮助将不胜感激!

最佳答案

在我看来问题是这样的:

当您过滤 booklist 时,您会创建一个临时的并将其分配给 mAdapter.booklist:

this.booklist = booklist;
notifyDataSetChanged();

然后,当您想要对列表进行排序时,您正在对列表的前一个实例进行排序,而不是当前实例(mAdapter 拥有)。

我怀疑 mAdapter.booklist = booksList;sortArrayListreverseSortArrayList 中的 mAdapter.notifyDataSetChanged 之前应该可以诀窍。

关于android - Recyclerview - 搜索 'Arraylist' 后排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48050255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com