package com.byagowi.persiancalendar.adapter;
import android.content.res.TypedArray;
import android.support.v7.widget.AppCompatImageView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.byagowi.persiancalendar.R;
import com.byagowi.persiancalendar.util.Utils;
import com.byagowi.persiancalendar.view.activity.MainActivity;
public class DrawerAdapter extends RecyclerView.Adapter<DrawerAdapter.ViewHolder> {
private final MainActivity mainActivity;
private static final int TYPE_HEADER = 0;
private static final int TYPE_ITEM = 1;
private int selectedItem;
private String[] drawerTitles;
private String[] drawerSubtitles;
private TypedArray drawerIcon;
private Utils utils;
public DrawerAdapter(MainActivity mainActivity) {
this.mainActivity = mainActivity;
utils = Utils.getInstance(mainActivity);
drawerTitles = mainActivity.getResources().getStringArray(R.array.drawerTitles);
drawerSubtitles = mainActivity.getResources().getStringArray(R.array.drawerSubtitles);
drawerIcon = mainActivity.getResources().obtainTypedArray(R.array.drawerIcons);
}
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView itemTitle;
private TextView itemSubtitle;
private AppCompatImageView imageView;
private View background;
ViewHolder(View itemView, int viewType) {
super(itemView);
if (viewType == TYPE_ITEM) {
itemView.setOnClickListener(this);
itemTitle = (TextView) itemView.findViewById(R.id.itemTitle);
itemSubtitle = (TextView) itemView.findViewById(R.id.itemSubtitle);
imageView = (AppCompatImageView) itemView.findViewById(R.id.ItemIcon);
background = itemView.findViewById(R.id.background);
} else {
imageView = (AppCompatImageView) itemView.findViewById(R.id.image);
}
}
@Override
public void onClick(View view) {
mainActivity.selectItem(getAdapterPosition());
}
}
@Override
public DrawerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_ITEM) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_drawer, parent, false);
return new ViewHolder(v, viewType);
} else if (viewType == TYPE_HEADER) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.header_drawer, parent, false);
return new ViewHolder(v, viewType);
}
return null;
}
@Override
public void onBindViewHolder(DrawerAdapter.ViewHolder holder, int position) {
if (!isPositionHeader(position)) {
utils.setFont(holder.itemTitle);
holder.itemTitle.setText(utils.shape(drawerTitles[position - 1]));
if (drawerSubtitles[position - 1].length() != 0) {
holder.itemSubtitle.setVisibility(View.VISIBLE);
utils.setFont(holder.itemSubtitle);
holder.itemSubtitle.setText(utils.shape(drawerSubtitles[position - 1]));
} else {
holder.itemSubtitle.setVisibility(View.GONE);
}
holder.imageView.setImageResource(drawerIcon.getResourceId(position - 1, 0));
if (selectedItem == position) {
holder.background.setVisibility(View.VISIBLE);
} else {
holder.background.setVisibility(View.GONE);
}
} else {
switch (utils.getSeason()) {
case SPRING:
holder.imageView.setImageResource(R.drawable.spring);
break;
case SUMMER:
holder.imageView.setImageResource(R.drawable.summer);
break;
case FALL:
holder.imageView.setImageResource(R.drawable.fall);
break;
case WINTER:
holder.imageView.setImageResource(R.drawable.winter);
break;
}
}
}
public void setSelectedItem(int item) {
selectedItem = item;
notifyDataSetChanged();
}
@Override
public int getItemCount() {
return drawerTitles.length + 1;
}
@Override
public int getItemViewType(int position) {
if (isPositionHeader(position)) {
return TYPE_HEADER;
} else {
return TYPE_ITEM;
}
}
private boolean isPositionHeader(int position) {
return position == 0;
}
}