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.StatusViewHolder; import com.gnod.geekr.model.StatusModel; import com.gnod.geekr.tool.LaunchHelper; import com.gnod.geekr.widget.GeekrPanel; import com.gnod.geekr.widget.StatusItemLayout; public class ProfileTimelineAdapter extends BaseAdapter { private Context mContext; private ArrayList<StatusModel> mList; private boolean isSelf = false; private GeekrPanel.OnItemClcikListener mPanelItemClicked; public ProfileTimelineAdapter(Context context, ArrayList<StatusModel> statusList) { this.mContext = context; this.mList = statusList; } @Override public int getCount() { return mList.size(); } @Override public Object getItem(int position) { return mList; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = new StatusItemLayout(mContext); if(mClickListener != null) convertView.setOnClickListener(mClickListener); if(mOnLongClickListener != null) convertView.setOnLongClickListener(mOnLongClickListener); if(mPanelItemClicked != null) ((StatusViewHolder) convertView.getTag()).togglePanel.setClickedListener( mPanelItemClicked); } StatusModel item = mList.get(position); if (item == null) return null; StatusViewHolder statusView = (StatusViewHolder) convertView.getTag(); statusView.togglePanel.resetLayout(); statusView.layoutAvatar.setVisibility(View.GONE); statusView.textName.setVisibility(View.GONE); if(isSelf){ statusView.togglePanel.setBtnDelVisible(true); } statusView.togglePanel.setItemIndex(position); ((StatusItemLayout) convertView).attachViewData(item, position); return convertView; } public void setSelfFlag(boolean flag) { isSelf = flag; } public void setOnPanelItemClickListener(GeekrPanel.OnItemClcikListener l) { this.mPanelItemClicked = l; } private OnClickListener mClickListener = new OnClickListener() { @Override public void onClick(View view) { StatusViewHolder statusView = (StatusViewHolder) view.getTag(); if(statusView.togglePanel.isOpen()){ statusView.togglePanel.toggle(); return; } int index = statusView.tag; StatusModel item = mList.get(index); LaunchHelper.startDetailActivity(view.getContext(), item); } }; private OnLongClickListener mOnLongClickListener = new OnLongClickListener() { @Override public boolean onLongClick(View v) { StatusViewHolder statusView = (StatusViewHolder) v.getTag(); statusView.togglePanel.toggle(); return true; } }; }