Skip to content

Commit eec3cec

Browse files
committed
searchfilters: replace Map<Integer, Object> with SparseArrayCompat
1 parent 868be7a commit eec3cec

2 files changed

Lines changed: 27 additions & 25 deletions

File tree

app/src/main/java/org/schabi/newpipe/fragments/list/search/filter/SearchFilterDialogSpinnerAdapter.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,9 @@
1818
import org.schabi.newpipe.util.DeviceUtils;
1919
import org.schabi.newpipe.util.ServiceHelper;
2020

21-
import java.util.HashMap;
22-
import java.util.Map;
2321
import java.util.Objects;
2422

23+
import androidx.collection.SparseArrayCompat;
2524

2625
public class SearchFilterDialogSpinnerAdapter extends BaseAdapter {
2726

@@ -30,8 +29,8 @@ public class SearchFilterDialogSpinnerAdapter extends BaseAdapter {
3029
private final BaseSearchFilterUiGenerator.UiWrapperMapDelegate wrapperDelegate;
3130
private final Spinner spinner;
3231
private final SparseIntArray id2PosMap = new SparseIntArray();
33-
private final Map<Integer, UiItemWrapperSpinner>
34-
viewWrapperMap = new HashMap<>();
32+
private final SparseArrayCompat<UiItemWrapperSpinner>
33+
viewWrapperMap = new SparseArrayCompat<>();
3534

3635
public SearchFilterDialogSpinnerAdapter(
3736
final Context context,

app/src/main/java/org/schabi/newpipe/fragments/list/search/filter/SearchFilterLogic.java

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,13 @@
1313
import java.util.ArrayList;
1414
import java.util.Arrays;
1515
import java.util.Collections;
16-
import java.util.HashMap;
1716
import java.util.HashSet;
1817
import java.util.List;
19-
import java.util.Map;
2018
import java.util.Objects;
2119
import java.util.Set;
2220

2321
import androidx.annotation.Nullable;
22+
import androidx.collection.SparseArrayCompat;
2423

2524
import static org.schabi.newpipe.extractor.search.filter.FilterContainer.ITEM_IDENTIFIER_UNKNOWN;
2625

@@ -46,10 +45,12 @@ public class SearchFilterLogic {
4645
private final SearchQueryHandlerFactory searchQHFactory;
4746
private final ExclusiveGroups contentFilterExclusive = new ExclusiveGroups();
4847
private final ExclusiveGroups sortFilterExclusive = new ExclusiveGroups();
49-
private final Map<Integer, IUiItemWrapper> contentFilterIdToUiItemMap = new HashMap<>();
50-
private final Map<Integer, IUiItemWrapper> sortFilterIdToUiItemMap = new HashMap<>();
51-
private final Map<Integer, FilterContainer> contentFilterFidToSupersetSortFilterMap =
52-
new HashMap<>();
48+
private final SparseArrayCompat<IUiItemWrapper> contentFilterIdToUiItemMap =
49+
new SparseArrayCompat<>();
50+
private final SparseArrayCompat<IUiItemWrapper> sortFilterIdToUiItemMap =
51+
new SparseArrayCompat<>();
52+
private final SparseArrayCompat<FilterContainer> contentFilterFidToSupersetSortFilterMap =
53+
new SparseArrayCompat<>();
5354
private final Callback callback;
5455
/**
5556
* This list is used to store via Icepick and eventual store as preset
@@ -118,7 +119,7 @@ public void restorePreviouslySelectedFilters(final List<Integer> selectedContent
118119
}
119120

120121
private void reselectUiItems(final List<Integer> selectedFilters,
121-
final Map<Integer, IUiItemWrapper> filterIdToUiItemMap) {
122+
final SparseArrayCompat<IUiItemWrapper> filterIdToUiItemMap) {
122123
for (final int id : selectedFilters) {
123124
final IUiItemWrapper iUiItemWrapper = filterIdToUiItemMap.get(id);
124125
if (iUiItemWrapper != null) {
@@ -127,10 +128,10 @@ private void reselectUiItems(final List<Integer> selectedFilters,
127128
}
128129
}
129130

130-
private void deselectUiItems(final Map<Integer, IUiItemWrapper> filterIdToUiItemMap) {
131-
for (final Map.Entry<Integer, IUiItemWrapper> entry : filterIdToUiItemMap.entrySet()) {
132-
if (entry != null && entry.getValue() != null) {
133-
final IUiItemWrapper iUiItemWrapper = entry.getValue();
131+
private void deselectUiItems(final SparseArrayCompat<IUiItemWrapper> filterIdToUiItemMap) {
132+
for (int index = 0; index < filterIdToUiItemMap.size(); index++) {
133+
final IUiItemWrapper iUiItemWrapper = filterIdToUiItemMap.valueAt(index);
134+
if (iUiItemWrapper != null) {
134135
iUiItemWrapper.setChecked(false);
135136
}
136137
}
@@ -190,7 +191,7 @@ public void initSortFiltersUi(final ICreateUiForFiltersWorker createUiForFilters
190191
* @param createUiForFiltersWorker the implementation how to create the UI.
191192
*/
192193
private void initFiltersUi(final FilterGroup[] filterGroups,
193-
final Map<Integer, IUiItemWrapper> filterIdToUiItemMap,
194+
final SparseArrayCompat<IUiItemWrapper> filterIdToUiItemMap,
194195
final ICreateUiForFiltersWorker createUiForFiltersWorker) {
195196

196197
filterIdToUiItemMap.clear();
@@ -225,7 +226,7 @@ private void initFilters(
225226
final FilterGroup[] filterGroups,
226227
final ExclusiveGroups exclusive,
227228
final List<Integer> selectedFilters,
228-
@Nullable final Map<Integer, FilterContainer> fidToSupersetSortFilterMap) {
229+
@Nullable final SparseArrayCompat<FilterContainer> fidToSupersetSortFilterMap) {
229230
selectedFilters.clear();
230231
exclusive.clear();
231232

@@ -389,16 +390,18 @@ private void showSortFilterIdContainerUI(final int contentFilterId) {
389390
* See {@link SearchFilterOptionMenuAlikeDialogGenerator}
390391
*/
391392
protected void showAllAvailableSortFilters() {
392-
contentFilterFidToSupersetSortFilterMap.values().stream()
393-
.filter(Objects::nonNull)
394-
.distinct()
395-
.forEach(container ->
396-
setUiItemsVisibility(container, true, sortFilterIdToUiItemMap));
393+
for (int index = 0; index < contentFilterFidToSupersetSortFilterMap.size(); index++) {
394+
final FilterContainer container =
395+
contentFilterFidToSupersetSortFilterMap.valueAt(index);
396+
if (container != null) {
397+
setUiItemsVisibility(container, true, sortFilterIdToUiItemMap);
398+
}
399+
}
397400
}
398401

399402
private void setUiItemsVisibility(final FilterContainer filters,
400403
final boolean isVisible,
401-
final Map<Integer, IUiItemWrapper> filterIdToUiItemMap) {
404+
final SparseArrayCompat<IUiItemWrapper> filterIdToUiItemMap) {
402405
if (filters != null && filters.getFilterGroups() != null) {
403406
for (final FilterGroup filterGroup : filters.getFilterGroups()) {
404407
setUiItemVisible(isVisible, filterIdToUiItemMap, filterGroup.getIdentifier());
@@ -410,7 +413,7 @@ private void setUiItemsVisibility(final FilterContainer filters,
410413
}
411414

412415
private void setUiItemVisible(final boolean isVisible,
413-
final Map<Integer, IUiItemWrapper> filterIdToUiItemMap,
416+
final SparseArrayCompat<IUiItemWrapper> filterIdToUiItemMap,
414417
final int id) {
415418
final IUiItemWrapper uiWrapper = filterIdToUiItemMap.get(id);
416419
if (uiWrapper != null) {
@@ -473,7 +476,7 @@ public synchronized void selectSortFilter(final int filterId) {
473476
}
474477

475478
private void selectFilter(final int id,
476-
final Map<Integer, IUiItemWrapper> filterIdToUiItemMap,
479+
final SparseArrayCompat<IUiItemWrapper> filterIdToUiItemMap,
477480
final List<Integer> selectedFilter,
478481
final ExclusiveGroups exclusive) {
479482
final IUiItemWrapper uiItemWrapper =

0 commit comments

Comments
 (0)