Я хочу сделать функцию поиска дочерних элементов в расширенном представлении списка.У меня есть hashMap типа (String, List String) для дочерних элементов, где List String содержит все дочерние элементы.Однако я не мог понять, как отфильтровать данные из списка для использования в моем поисковом запросе.
Я пробовал некоторые методы из сообщений stackoverflow: Поиск HashMap в ArrayList из HashMap , Как использовать редактировать текст в качестве поля поиска в расширяемом списке просмотра Android? и немного других, но безрезультатно.
MainActivity.java
List<String> listP = new ArrayList<>();
HashMap<String, List<String>> listC = new HashMap<>();
ExpandableListAdapter expandableListAdapter = new ExpandableListAdapter(this, listP, listC, this);
listP.add("Movie");
listP.add("Building");
listP.add("Car");
List <String> movie = new ArrayList<>();
movie.add("horror");
movie.add("action");
List <String> building = new ArrayList<>();
building.add("bank");
building.add("hotel");
List <String> car = new ArrayList<>();
car.add("BMW");
car.add("Mercedes");
listC.put(listP.get(0),movie);
listC.put(listP.get(1),building);
listC.put(listP.get(2),car);
ExpandableListAdapter.Ява
List<String> listDataHeader;
private HashMap<String, List<String>> listHashMap;
public ExpandableListAdapter(Context context, List<String> listDataHeader, HashMap<String, List<String>> listHashMap, Activity activity) { this.context = context;
this.listDataHeader = listDataHeader;
this.listHashMap = listHashMap;
this.activity = activity;
}
public void filterData(String query)
{
query = query.toLowerCase();
listDataHeader.clear();
if(query.isEmpty())
{
listDataHeader.clear();
}
else // if user writes something
{
// I don't know how to get the values from the child items to compare it with query
}
}