package com.geo.smallcredit.adapter;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.geo.smallcredit.R;
import com.geo.smallcredit.listviewgroup.interfaces.ItemClickedListener;
import com.geo.smallcredit.listviewgroup.interfaces.ItemHeaderClickedListener;
import com.geo.smallcredit.vo.Group;
import com.geo.smallcredit.vo.Messg;
public class MailAdapter extends BaseAdapter implements
StickyListHeadersAdapter {
private List<Messg> mMessageList;
private List<Group> mMessageListGroup;
private ItemClickedListener mItemClickedListener;
private ItemHeaderClickedListener mItemHeaderClickedListener;
private Context context;
private boolean mIsOpen;// 初始化View时分组是否展开
public MailAdapter(Context context, List<Messg> message_list, boolean isOpen) {
this.context = context;
this.mMessageList = message_list;
this.mIsOpen = isOpen;
initMessageList(message_list);
}
private void initMessageList(List<Messg> message_list) {
this.mMessageList = message_list;
if (message_list != null && message_list.size() > 0) {
getSectionIndicesAndGroupNames();
}
}
@Override
public int getCount() {
return mMessageList == null ? 0 : mMessageList.size();
}
public int getRealCount() {
return mMessageList == null ? 0 : mMessageList.size();
}
@Override
public Object getItem(int position) {
return mMessageList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ItemViewHolder holder;
if (convertView == null) {
holder = new ItemViewHolder();
convertView = LayoutInflater.from(context).inflate(
R.layout.view_item, null);
holder.textViewInfo = (ImageView) convertView
.findViewById(R.id.text_item_content_info);
holder.textViewInfo2 = (ImageView) convertView
.findViewById(R.id.text_item_content_info2);
convertView.setTag(holder);
} else {
holder = (ItemViewHolder) convertView.getTag();
}
holder.textViewInfo.setBackgroundResource(R.drawable.jia);
// 若合起分组,则里面的view不显示
holder.textViewInfo
.setVisibility(mMessageListGroup.get(
mMessageList.get(position).getGroupId()).isShown() ? View.VISIBLE
: View.GONE);
holder.textViewInfo2
.setVisibility(mMessageListGroup.get(
mMessageList.get(position).getGroupId()).isShown() ? View.VISIBLE
: View.GONE);
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mItemClickedListener != null) {
mItemClickedListener.onItemClick(v, position);
}
}
});
return convertView;
}
/**
* 分组
*/
private void getSectionIndicesAndGroupNames() {
mMessageListGroup = new ArrayList<Group>();
Group gp;
int countGp = 0;
String groupName = "";
for (int i = 0; i < mMessageList.size(); i++) {
String groupName2 = mMessageList.get(i).getGroupName();
if (!groupName2.equals(groupName)) {
if (mMessageListGroup.size() > 0) {
mMessageListGroup.get(mMessageListGroup.size() - 1)
.setCount(countGp);
}
groupName = groupName2;
countGp = 1;
mMessageList.get(i).setGroupId(mMessageListGroup.size());
gp = new Group();
gp.setName(groupName);
gp.setFirstPositionInList(i);
gp.setShown(mIsOpen);
mMessageListGroup.add(gp);
} else {
countGp++;
mMessageList.get(i).setGroupId(mMessageListGroup.size() - 1);
}
}
}
@Override
public View getHeaderView(final int position, View convertView,
ViewGroup parent) {
ItemHeaderViewHolder holder = null;
if (convertView == null) {
holder = new ItemHeaderViewHolder();
convertView = LayoutInflater.from(context).inflate(
R.layout.view_item_header, parent, false);
holder.textViewGroupName = (TextView) convertView
.findViewById(R.id.text_item_header_name);
holder.imgArrow = (ImageView) convertView
.findViewById(R.id.img_item_header);
convertView.setTag(holder);
} else {
holder = (ItemHeaderViewHolder) convertView.getTag();
}
Group gp = mMessageListGroup.get(mMessageList.get(position)
.getGroupId());
holder.textViewGroupName.setText(gp.getName());
if (gp.isShown()) {
holder.imgArrow.setImageResource(R.drawable.down);
} else {
holder.imgArrow.setImageResource(R.drawable.enter_arrow);
}
return convertView;
}
@Override
public long getHeaderId(int position) {
return mMessageList.get(position).getGroupId();
}
/**
* 当点击header时,即GroupName,可以展开合起
*/
public void onListHeaderClicked(int position) {
Group gp = mMessageListGroup.get(mMessageList.get(position)
.getGroupId());
gp.setShown(!gp.isShown());
MailAdapter.this.notifyDataSetChanged();
}
public void setOnItemClickedListener(ItemClickedListener listener) {
this.mItemClickedListener = listener;
}
public void setOnItemHeaderClickedListener(
ItemHeaderClickedListener listener) {
this.mItemHeaderClickedListener = listener;
}
public ItemHeaderClickedListener getmItemHeaderClickedListener() {
return mItemHeaderClickedListener;
}
public class ItemHeaderViewHolder {
TextView textViewGroupName;
ImageView imgArrow;
}
public class ItemViewHolder {
ImageView textViewInfo, textViewInfo2;
}
}