Как подключить панель фильтров поиска к ArrayList и отобразить результат в ExpandableListView?

#java #android #arraylist #filter #android-listview

#java #Android #arraylist #Фильтр #android-listview

Вопрос:

Ну, может быть, название немного сложное. Я попытаюсь объяснить, что мне здесь нужно. У меня есть ArrayList<PlayerParameters> , в котором хранятся PlayerParameters объекты класса, и мой ExpandableListView отображает некоторые строковые значения из этого класса (имя, возраст, город и т.д.) Я хочу отфильтровать свои элементы по значениям. Я нашел учебное пособие, в котором рассказывается, как создать панель поиска: https://medium.com/@makkenasrinivasarao1/expandablelistview-with-checkbox-radiobutton-in-android-af9ec9d81ddf. Вопрос в том, как подключить эту панель к моему ArrayList и ExpandableListView. Это фрагмент кода, в котором я помещаю свои данные в ExpandableListView.

 public void onCallback(ArrayList<PlayerParameters> playersList, ArrayList<String> playersNames) {
                listDataHeader = playersNames;
                String[] listDataHeaderArray = new String[listDataHeader.size()];
                playersNames.toArray(listDataHeaderArray);
                Collections.sort(listDataHeader);
                listDataChild = new HashMap<String, List<String>>();
                HashMap<String, ArrayList<String>> playerInfo = new HashMap<String, ArrayList<String>>();
                for (PlayerParameters j : playersList) {
                    ArrayList<String> infoList = new ArrayList<String>();
                    infoList.add("Nickname: "   j.getNickname());
                    infoList.add("Age: "   j.getAge());
                    infoList.add("City: "   j.getCity());
                    playerInfo.put(j.getName(), infoList);
                }

                for (int i = 0; i < listDataHeader.size(); i  ){
                    listDataChild.put(listDataHeader.get(i), playerInfo.get(listDataHeader.get(i)));
                }

                ExpandableListView expListView = view.findViewById(R.id.lvExp);
                listAdapter = new ExpandableListAdapter(getActivity(), listDataHeader, listDataChild);
                expListView.setAdapter(listAdapter);
                expListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {

                    @Override
                    public boolean onGroupClick(ExpandableListView parent, View v,
                                                int groupPosition, long id) {

                        return false;
                    }
                });
}
  

Комментарии:

1. вы должны изменить свой адаптер и добавить фильтр для отображаемых элементов