Fix navigation drawer highlighting

pull/795/head
Alex Baker 7 years ago
parent ec6bba7808
commit bf3c7c2c78

@ -56,7 +56,7 @@ public class FilterAdapter extends BaseAdapter {
private final LayoutInflater inflater; private final LayoutInflater inflater;
private final ThemeCache themeCache; private final ThemeCache themeCache;
private boolean navigationDrawer; private boolean navigationDrawer;
private FilterListItem selected; private Filter selected = null;
private List<FilterListItem> items = new ArrayList<>(); private List<FilterListItem> items = new ArrayList<>();
private Map<Filter, Integer> counts = new HashMap<>(); private Map<Filter, Integer> counts = new HashMap<>();
@ -84,7 +84,7 @@ public class FilterAdapter extends BaseAdapter {
} }
public void setData(List<FilterListItem> items) { public void setData(List<FilterListItem> items) {
setData(items, null); setData(items, selected);
} }
public void setData(List<FilterListItem> items, @Nullable Filter selected) { public void setData(List<FilterListItem> items, @Nullable Filter selected) {
@ -94,7 +94,7 @@ public class FilterAdapter extends BaseAdapter {
public void setData(List<FilterListItem> items, @Nullable Filter selected, int defaultIndex) { public void setData(List<FilterListItem> items, @Nullable Filter selected, int defaultIndex) {
assertMainThread(); assertMainThread();
this.items = items; this.items = items;
this.selected = defaultIndex >= 0 ? getItem(indexOf(selected, defaultIndex)) : selected; this.selected = defaultIndex >= 0 ? getFilter(indexOf(selected, defaultIndex)) : selected;
notifyDataSetChanged(); notifyDataSetChanged();
} }
@ -116,6 +116,11 @@ public class FilterAdapter extends BaseAdapter {
return items.get(position); return items.get(position);
} }
private Filter getFilter(int position) {
FilterListItem item = getItem(position);
return item instanceof Filter ? (Filter) item : null;
}
@Override @Override
public long getItemId(int position) { public long getItemId(int position) {
return position; return position;
@ -170,11 +175,12 @@ public class FilterAdapter extends BaseAdapter {
} }
public Filter getSelected() { public Filter getSelected() {
return selected instanceof Filter ? (Filter) selected : null; return selected;
} }
public void setSelected(Filter selected) { public void setSelected(Filter selected) {
this.selected = selected; this.selected = selected;
notifyDataSetChanged();
} }
public ArrayList<FilterListItem> getItems() { public ArrayList<FilterListItem> getItems() {

@ -168,7 +168,6 @@ public class NavigationDrawerFragment extends InjectingFragment {
FilterListItem item = adapter.getItem(position); FilterListItem item = adapter.getItem(position);
if (item instanceof Filter) { if (item instanceof Filter) {
if (!item.equals(adapter.getSelected())) { if (!item.equals(adapter.getSelected())) {
adapter.setSelected((Filter) item);
if (mCallbacks != null) { if (mCallbacks != null) {
mCallbacks.onFilterItemClicked(item); mCallbacks.onFilterItemClicked(item);
} }

Loading…
Cancel
Save