package de.saxsys.android.projectiler.app.ui.adapter;
import android.content.Context;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import de.saxsys.android.projectiler.app.R;
/**
* Created by stefan.heinze on 12.05.2014.
*/
public class NavigationDrawerAdapter extends BaseExpandableListAdapter {
private final LayoutInflater inflater;
private Context context;
private final int activeElement;
private List<String> groups;
private List<String> projects;
private List<String> navigation;
public NavigationDrawerAdapter(Context context, List<String> objects, int activeElement) {
this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.activeElement = activeElement;
this.projects = objects;
this.context = context;
groups = new ArrayList<String>();
String[] stringArray = context.getResources().getStringArray(R.array.navigation_drawer_groups);
for(int i = 0; i < stringArray.length; i++){
groups.add(stringArray[i]);
}
navigation = new ArrayList<String>();
navigation.add(context.getString(R.string.current_tracks));
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup viewGroup) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.navigation_drawer_group_item, null);
}
TextView tvGroupName = (TextView) convertView.findViewById(R.id.tvGroupName);
tvGroupName.setText(groups.get(groupPosition));
ExpandableListView eLV = (ExpandableListView) viewGroup;
eLV.expandGroup(groupPosition);
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean b, View convertView, ViewGroup viewGroup) {
final String children = (String) getChild(groupPosition, childPosition);
View view = convertView;
if (view == null) {
view = inflater.inflate(R.layout.adapter_navigation_drawer, viewGroup, false);
lookup(view);
}
final ViewHolder holder = (ViewHolder) view.getTag();
holder.tvProjectName.setText(children);
if(groupPosition == 1){
// kein Projekt gewaehlt
if(activeElement == -1){
holder.tvProjectName.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
holder.tvProjectName.setTextColor(context.getResources().getColor(android.R.color.black));
}else{
if(childPosition == activeElement){
holder.tvProjectName.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
holder.tvProjectName.setTextColor(context.getResources().getColor(android.R.color.black));
}else{
holder.tvProjectName.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
holder.tvProjectName.setTextColor(context.getResources().getColor(android.R.color.darker_gray));
}
}
}else{
holder.tvProjectName.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
holder.tvProjectName.setTextColor(context.getResources().getColor(android.R.color.black));
}
return view;
}
private void lookup(final View view) {
final TextView tvProjectName = (TextView) view.findViewById(R.id.tv_project_name);
final ViewHolder holder = new ViewHolder(tvProjectName);
view.setTag(holder);
}
@Override
public int getGroupCount() {
return groups.size();
}
@Override
public int getChildrenCount(int i) {
if(i == 0){
return navigation.size();
}else{
return projects.size();
}
}
@Override
public Object getGroup(int i) {
return groups.get(i);
}
@Override
public Object getChild(int i, int i2) {
if(i == 0){
return navigation.get(i2);
}else{
return projects.get(i2);
}
}
@Override
public long getGroupId(int i) {
return 0;
}
@Override
public long getChildId(int i, int i2) {
return 0;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int i, int i2) {
return true;
}
private static class ViewHolder {
TextView tvProjectName;
private ViewHolder(final TextView tvProjectName) {
this.tvProjectName = tvProjectName;
}
}
}