package com.gnod.geekr.app.adapter;
import java.util.ArrayList;
import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import com.gnod.geekr.holder.StatusDataHolder;
import com.gnod.geekr.holder.StatusViewHolder;
import com.gnod.geekr.model.StatusModel;
import com.gnod.geekr.tool.LaunchHelper;
import com.gnod.geekr.tool.converter.GeekrViewConverter;
import com.gnod.geekr.tool.manager.SettingManager;
import com.gnod.geekr.tool.manager.StatusManager;
import com.gnod.geekr.widget.GeekrPanel;
import com.gnod.geekr.widget.GeekrPanel.OnItemClcikListener;
import com.gnod.geekr.widget.StatusItemLayout;
public class TimelineAdapter extends BaseAdapter {
private Context mContext;
private StatusDataHolder mStatusHolder;
private OnItemClcikListener mOnPanelItemClicked;
public TimelineAdapter(Context context, StatusDataHolder statusHolder) {
this.mContext = context;
this.mStatusHolder = statusHolder;
}
public TimelineAdapter(Context context, ArrayList<StatusModel> list) {
this(context, new StatusDataHolder(list));
}
public TimelineAdapter(Context context,
StatusDataHolder mStatusHolder2,
OnItemClcikListener onPanelItemClicked) {
this(context, mStatusHolder2);
this.mOnPanelItemClicked = onPanelItemClicked;
}
@Override
public int getCount() {
return mStatusHolder.list.size();
}
@Override
public Object getItem(int position) {
return mStatusHolder.list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
StatusViewHolder statusView = null;
if (convertView == null) {
convertView = new StatusItemLayout(mContext);
if(mClickListener != null)
convertView.setOnClickListener(mClickListener);
if(mOnLongClickListener != null)
convertView.setOnLongClickListener(mOnLongClickListener);
if(mOnPanelItemClicked != null)
((StatusViewHolder) convertView.getTag()).togglePanel.setClickedListener(
mOnPanelItemClicked);
}
statusView = (StatusViewHolder) convertView.getTag();
statusView.togglePanel.resetLayout();
StatusModel item = mStatusHolder.list.get(position);
if (item == null)
return null;
statusView.togglePanel.setItemIndex(position);
GeekrViewConverter.attachViewDatas(statusView, item, position,
SettingManager.getPicModel());
return convertView;
}
public void setItemClickListener(OnClickListener clickListener) {
this.mClickListener = clickListener;
}
public void setOnItemLongClickListener(OnLongClickListener l){
this.mOnLongClickListener = l;
}
public void setOnPanelItemClickListener(GeekrPanel.OnItemClcikListener l) {
this.mOnPanelItemClicked = l;
}
private OnClickListener mClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
StatusViewHolder statusView = (StatusViewHolder) v.getTag();
int index = statusView.tag;
if(statusView.togglePanel.isOpen()){
statusView.togglePanel.toggle();
} else {
StatusModel item = mStatusHolder.list.get(index);
LaunchHelper.startDetailActivity(v.getContext(),
item, index, StatusManager.getCacheTag());
}
}
};
private OnLongClickListener mOnLongClickListener = new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
StatusViewHolder statusView = (StatusViewHolder) v.getTag();
statusView.togglePanel.toggle();
return true;
}
};
}