package typical_if.android.adapter;
/**
* Created by admin on 14.07.2014.
*/
import android.content.Context;
import android.graphics.Color;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
import typical_if.android.R;
import typical_if.android.view.AnimatedExpandableListView;
public class ExpandableListAdapter extends AnimatedExpandableListView.AnimatedExpandableListAdapter {
private final List<GroupObject> _listDataHeader;
private final SparseArray<List<String>> _listDataChild;
private final LayoutInflater inflater;
public ExpandableListAdapter(Context context, List<GroupObject> listDataHeader, SparseArray<List<String>> listChildData) {
this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this._listDataHeader = listDataHeader;
this._listDataChild = listChildData;
}
@Override
public Object getChild(int groupPosition, int childPosititon) {
return this._listDataChild.get(groupPosition).get(childPosititon);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getRealChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
final String childText = (String) getChild(groupPosition, childPosition);
if (convertView == null) {
convertView = inflater.inflate(R.layout.navigation_drawer_child_item, null);
}
TextView txtListChild = (TextView) convertView.findViewById(R.id.childItem);
txtListChild.setText(childText);
return convertView;
}
@Override
public int getRealChildrenCount(int groupPosition) {
if (this._listDataChild.get(groupPosition) == null) {
return 0;
}
return this._listDataChild.get(groupPosition).size();
}
@Override
public Object getGroup(int groupPosition) {
return this._listDataHeader.get(groupPosition);
}
@Override
public int getGroupCount() {
return this._listDataHeader.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
GroupViewHolder groupViewHolder;
GroupObject header = (GroupObject) getGroup(groupPosition);
if (convertView == null) {
convertView = inflater.inflate(R.layout.navigation_drawer_group_item, null);
groupViewHolder = new GroupViewHolder(convertView);
convertView.setTag(groupViewHolder);
} else {
groupViewHolder = (GroupViewHolder) convertView.getTag();
}
if (groupPosition == 4) {
groupViewHolder.groupTitle.setTextColor(convertView.getResources().getColor(R.color.ST_BG_COLOR));
} else {
groupViewHolder.groupTitle.setTextColor(Color.WHITE);
}
groupViewHolder.groupTitle.setText(header.title);
groupViewHolder.imgGroupItem.setImageResource(header.imgId);
return convertView;
}
public static class GroupObject {
public final String title;
public final int imgId;
public GroupObject(String title, int imgId) {
this.title = title;
this.imgId = imgId;
}
}
private static class GroupViewHolder {
public final ImageView imgGroupItem;
public final TextView groupTitle;
GroupViewHolder(View view) {
this.imgGroupItem = (ImageView) view.findViewById(R.id.imgGroupItem);
this.groupTitle = (TextView) view.findViewById(R.id.groupItem);
}
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}