Как фильтровать список, который добавляет фильтр и удаляет некоторые из запросов Java Realm - PullRequest
0 голосов
/ 25 июня 2018

У меня есть список, показывающий некоторые вещи, и у каждого есть свой тег.Я хочу фильтровать материалы по всем тэгам, по которым щелкнули, и поменять фильтр по некоторым меткам.Но просто отфильтруйте список, купите один тег !!!Как отфильтровать все выбранные теги?

private OrderedRealmCollection<StuffPOJO> list;


@Override
public void onFiltersSelected(ArrayList<TagPojo> filters) {

}

@Override
public void onNothingSelected() {
    UpdateStuffList(list.where().findAllAsync());
}

@Override
public void onFilterSelected(TagPojo item) {
    ///just filter list buy last tag selected !!! 
    /// how can filter all tag selected?
    UpdateStuffList(list.where()
            .equalTo("tagList.id", item.getId())
            .findAllAsync());
}

@Override
public void onFilterDeselected(TagPojo item) {

}



@Override
public void UpdateTagList(OrderedRealmCollection<TagPojo> list) {
    tagAdapter = new Adapter(list);
}

@Override
public void UpdateStuffList(OrderedRealmCollection<StuffPOJO> list) {
    this.list = list;
    stuffAdapter.updateData(this.list);
}

1 Ответ

0 голосов
/ 25 июня 2018

Вам нужно где-то хранить все фильтры:

private List<TagPojo> filters = new ArrayList<>();

@Override
public void onFilterSelected(TagPojo item) {
    filters.add(item);
    String[] filterIds = filters.stream().map(f -> f.getId()).toArray(size -> new String[size]);
    UpdateStuffList(list.where()
        .in("tagList.id", filterIds )
        .findAllAsync());
}

@Override
public void onFilterDeselected(TagPojo item) {
    // need to have a proper TagPojo.equals() for this
    filters.remove(item);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...