Может ли кто-нибудь объяснить мне, почему список ConnectionsCategories переписывается в этой части кода? Я пытаюсь отфильтровать данные внутри метода performFiltering фильтра, размещенного внутри RecyclerView. Как я заметил, список принимает новые значения в этой строке: connectionsCategoryModelCopy.setValues (filterConnectionsModels);
String charString = charSequence.toString();
filteredConnectionsCategories.clear();
if (charString.isEmpty()) {
filteredConnectionsCategories.addAll(connectionsCategories);
} else {
List<ConnectionsCategoryModel> filteredList = new ArrayList<>();
for (ConnectionsCategoryModel connectionsCategoryModel : connectionsCategories) {
ConnectionsCategoryModel connectionsCategoryModelCopy = connectionsCategoryModel;
List<ConnectionsModel> connectionsModels = connectionsCategoryModelCopy.getValues();
List<ConnectionsModel> filteredConnectionsModels = new ArrayList<>();
for (ConnectionsModel connectionsModel : connectionsModels) {
if (connectionsModel.getName().toLowerCase().replaceAll("\\s", "").contains(charString.toLowerCase().replaceAll("\\s", ""))) {
filteredConnectionsModels.add(connectionsModel);
}
}
if (!filteredConnectionsModels.isEmpty()) {
connectionsCategoryModelCopy.setValues(filteredConnectionsModels);
filteredList.add(connectionsCategoryModelCopy);
}
}
filteredConnectionsCategories = filteredList;
}




ConnectionsCategoryModel connectionsCategoryModelCopy = connectionsCategoryModel;
Эта строка - это ваша проблема. Вы делаете здесь «мелкую копию». Когда вы получите этот список:
List<ConnectionsModel> connectionsModels = connectionsCategoryModelCopy.getValues();
вам нужно сделать «глубокую копию» каждого элемента, прежде чем выполнять вызов замены.