У меня возникла проблема, когда я хочу отсортировать свои переменные по меню сборов, я имею в виду, что у меня есть список ArrayList с данными как «С ПЕПЕРОНИ, 1» или «ШАМПАНСКОЕ, 1,2», где, 1 или, 1,2, означает меню переменной, поэтому, когда я нажимаю на Меню 1, я должен видеть только те переменные, которые имеют, 1, или, 1,2, или 1,2,3 (где 1) в их множество.
И на самом деле то, что я сделал, работает, но только с переменными, у которых есть несколько меню, я имею в виду, если переменная находится в меню 1,2,3,4, и я нажимаю 2, которые будут видны, но если переменная находится только в одном меню, как 1 так, 1, в массиве, который не будет визуализирован, и я не могу понять, почему.
вот мой код, в котором я фильтрую переменные и устанавливаю их в новый массив:
public void FilterVariable() {
filteredVariable = new ArrayList<>();
for (VariantiConstructor varianti : variantiConstructors) {
String data = varianti.getMenu();
String[] items = data.split("," + positionMenu + ",");
try {
if (items[0].equals(data)) {
//
} else {
filteredVariable.add(varianti);
}
} catch (Exception e) {
//
}
}
}
А вот экран, на котором я отлаживал и где был, 2, и он пропустил его при добавлении в ArrayList:
Исключение не дает ошибок
пожалуйста, напечатайте исключение, например, e.prinStackTrace ();
e.printStackTrace ();
поэтому мне просто нужно добавить e.printStackTrace (); под уловом {? потому что это не дает никакого результата
@JohnKarry Пожалуйста, проверьте решение ниже, я только что рассказал о нем .. Проверьте его и дайте мне знать в случае возникновения проблем
Вам необходимо использовать следующий код для замыкания ArrayList
ArrayList<String> YOUR_ARRAYLIST = new ArrayList<>();
private void searchDataFromList(String serachString) {
ArrayList<String> SEARCH_ARRAYLIST = new ArrayList<>();
for (int i = 0; i < YOUR_ARRAYLIST.size(); i++) {
if (serachString.contains(YOUR_ARRAYLIST.get(i))) {
SEARCH_ARRAYLIST.add(YOUR_ARRAYLIST.get(i));
}
}
}
В вашем прослушивателе кликов вам нужно вызвать этот метод searchDataFromList() следующим образом
YOUR_CLICK.setOnClickListener(view -> {
String searchString = "WITH PEPERONI,1,";
String YOUR_SEARCH_STRING = "";
List<String> YOUR_SELECETD_LIST = Arrays.asList(searchString.split(","));
for (int i = 0; i <YOUR_SELECETD_LIST.size(); i++) {
if (YOUR_SELECETD_LIST.get(i).length()==1)
{
YOUR_SEARCH_STRING = YOUR_SELECETD_LIST.get(i);
System.out.println("VALUE IS ==>>>>> "+YOUR_SEARCH_STRING);
}
}
if (!YOUR_SEARCH_STRING.isEmpty())
{
searchDataFromList(YOUR_SEARCH_STRING);
}
Хорошо, теперь это работает наоборот, теперь добавляются только элементы, у которых есть только одно меню, поэтому, если у переменной есть меню, 1, another, 1,2, another, 1, another, 1,2,3, добавленные переменные - это только одна с , 1,
может мне просто надо в searchString ввести номер меню без запятых?
@JohnKarry .. Это работает для вас .. Дайте мне знать, если возникнут проблемы
На самом деле, инвертируя YOUR_ARRAYLIST.get (i) .getMenu.contains (searchString), спасибо.
так что теперь метод "filterVariable = new ArrayList <> (); for (int i = 0; i <variantiConstructors.size (); i ++) {if (variantiConstructors.get (i) .getMenu (). contains (search)" ) {filterVariable.add (variantiConstructors.get (i));}} "и он работает нормально
чтобы напечатать логарифм исключения, затем перейдите к решению