package com.aspsine.swipetoloadlayout.demo.adapter;
import android.content.res.Resources;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.aspsine.swipetoloadlayout.demo.R;
import com.aspsine.swipetoloadlayout.demo.model.Character;
import com.aspsine.swipetoloadlayout.demo.model.Section;
import com.squareup.picasso.CircleTransformation;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.List;
/**
* Created by aspsine on 15/9/4.
*/
public class SectionAdapter extends BaseGroupAdapter<Section, Character> {
List<Section> mSections;
public SectionAdapter() {
mSections = new ArrayList<>();
}
public void setList(List<Section> sections) {
mSections.clear();
append(sections);
}
public void append(List<Section> sections) {
mSections.addAll(sections);
notifyDataSetChanged();
}
@Override
protected int getParentViewType(int groupPosition) {
return -1;
}
@Override
public int getGroupCount() {
return mSections.size();
}
@Override
protected Section getGroup(int groupPosition) {
return mSections.get(groupPosition);
}
@Override
protected View getGroupView(final int groupPosition, View convertView, ViewGroup parent) {
HeaderViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_header, parent, false);
holder = new HeaderViewHolder();
holder.tvHeader = (TextView) convertView.findViewById(R.id.tvHeader);
convertView.setTag(holder);
} else {
holder = (HeaderViewHolder) convertView.getTag();
}
final String header = getGroup(groupPosition).getName();
holder.tvHeader.setText(header);
return convertView;
}
@Override
protected int getChildViewType(int groupPosition, int childPositionInGroup) {
return 1;
}
@Override
public int getChildCount(int groupPosition) {
List<Character> characters = getGroup(groupPosition).getCharacters();
return characters != null ? characters.size() : 0;
}
@Override
protected Character getChild(int groupPosition, int childPosition) {
return getGroup(groupPosition).getCharacters().get(childPosition);
}
@Override
protected View getChildView(final int groupPosition, final int childPosition, View convertView, ViewGroup parent) {
ChildViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_hero, parent, false);
holder = new ChildViewHolder();
holder.tvName = (TextView) convertView.findViewById(R.id.tvName);
holder.ivAvatar = (ImageView) convertView.findViewById(R.id.ivAvatar);
convertView.setTag(holder);
} else {
holder = (ChildViewHolder) convertView.getTag();
}
final Character character = getChild(groupPosition, childPosition);
holder.tvName.setText(character.getName());
Resources resources = parent.getResources();
int size = resources.getDimensionPixelOffset(R.dimen.hero_avatar_size);
int width = resources.getDimensionPixelOffset(R.dimen.hero_avatar_border);
Picasso.with(parent.getContext())
.load(character.getAvatar())
.resize(size, size)
.transform(new CircleTransformation(width))
.into(holder.ivAvatar);
final View finalConvertView = convertView;
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnChildItemClickListener != null) {
mOnChildItemClickListener.onChildItemClick(groupPosition, childPosition, character, finalConvertView);
}
}
});
convertView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if (mOnChildItemLongClickListener != null) {
return mOnChildItemLongClickListener.onClickItemLongClick(groupPosition, childPosition, character, finalConvertView);
}
return false;
}
});
return convertView;
}
public class HeaderViewHolder {
TextView tvHeader;
}
public class ChildViewHolder {
ImageView ivAvatar;
TextView tvName;
}
}