1 package com.moiseum.wolnelektury.view.main;
3 import android.content.Context;
4 import android.support.annotation.NonNull;
5 import android.view.View;
6 import android.view.ViewGroup;
8 import com.moiseum.wolnelektury.R;
9 import com.moiseum.wolnelektury.base.WLApplication;
10 import com.moiseum.wolnelektury.components.recycler.RecyclerAdapter;
11 import com.moiseum.wolnelektury.components.recycler.ViewHolder;
12 import com.moiseum.wolnelektury.utils.SharedPreferencesUtils;
18 public class NavigationAdapter extends RecyclerAdapter<NavigationElement, ViewHolder<NavigationElement>> {
20 private static int TYPE_ITEM = 0;
21 private static int TYPE_SEPARATOR = 1;
22 private static int TYPE_SUPPORT = 2;
23 private static int TYPE_BLANK = 3;
25 private final SupportUsListener supportUsListener;
27 private final SharedPreferencesUtils preferences = WLApplication.getInstance().getPreferences();
29 NavigationAdapter(Context context, SupportUsListener supportUsListener) {
30 super(context, Selection.SINGLE);
31 this.supportUsListener = supportUsListener;
32 setItems(NavigationElement.valuesForNavigation());
36 public int getItemViewType(int position) {
37 NavigationElement element = getItem(position);
38 if (element.requiresLogin() && !preferences.isUserLoggedIn()) {
44 return TYPE_SEPARATOR;
54 public ViewHolder<NavigationElement> onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
55 if (viewType == TYPE_SEPARATOR) {
56 return new SeparatorViewHolder(inflate(R.layout.navigation_separator_item, parent));
58 if (viewType == TYPE_SUPPORT) {
59 return new SupportViewHolder(inflate(R.layout.navigation_support_item, parent), supportUsListener);
61 if (viewType == TYPE_BLANK) {
62 return new NavigationBlankViewHolder(inflate(R.layout.navigation_blank, parent));
64 return new NavigationViewHolder(inflate(R.layout.navigation_item, parent));
68 protected String getItemId(NavigationElement item) {
73 protected void onItemClicked(View view, NavigationElement item, int position) {
74 if (item != NavigationElement.SEPARATOR && item != NavigationElement.SUPPORT_US) {
75 super.onItemClicked(view, item, position);
79 interface SupportUsListener {
80 void onSupportUsClicked();