package com.mcxiaoke.minicat.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.BaseAdapter;
import com.mcxiaoke.minicat.R;
import com.mcxiaoke.minicat.dao.model.StatusModel;
import com.mcxiaoke.minicat.ui.widget.ItemView;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
import java.util.List;
/**
* @author mcxiaoke
* @version 2.5 2012.03.28
*/
public abstract class BaseStatusArrayAdapter extends BaseAdapter implements
OnScrollListener {
private static final String TAG = BaseStatusArrayAdapter.class
.getSimpleName();
protected Context mContext;
protected LayoutInflater mInflater;
protected ImageLoader mLoader;
protected boolean busy;
protected List<StatusModel> mData;
public BaseStatusArrayAdapter(Context context) {
this(context, null);
}
public BaseStatusArrayAdapter(Context context, List<StatusModel> data) {
super();
initialize(context, data);
}
private void initialize(Context context, List<StatusModel> data) {
this.mContext = context;
this.mInflater = LayoutInflater.from(mContext);
this.mLoader = ImageLoader.getInstance();
mData = new ArrayList<StatusModel>();
if (data != null) {
mData.addAll(data);
}
}
@Override
public int getCount() {
return mData.size();
}
@Override
public StatusModel getItem(int position) {
return mData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item_status, parent, false);
holder = new ViewHolder();
holder.view = (ItemView) convertView;
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final StatusModel s = getData().get(position);
UIHelper.setContent(holder.view, s);
UIHelper.setMetaInfo(holder.view, s);
UIHelper.setImageClick(holder.view, s.getUserId());
String headUrl = s.getUserProfileImageUrl();
mLoader.displayImage(headUrl, holder.view.getImageView());
return convertView;
}
protected List<StatusModel> getData() {
return mData;
}
public void setData(List<StatusModel> data) {
mData.clear();
mData.addAll(data);
notifyDataSetChanged();
}
public void clear() {
mData.clear();
notifyDataSetChanged();
}
public void addData(List<StatusModel> data) {
mData.addAll(data);
notifyDataSetChanged();
}
public void remove(StatusModel status) {
mData.remove(status);
notifyDataSetChanged();
}
public void add(StatusModel status) {
mData.add(status);
notifyDataSetChanged();
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case OnScrollListener.SCROLL_STATE_IDLE:
busy = false;
break;
case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
busy = true;
break;
case OnScrollListener.SCROLL_STATE_FLING:
busy = true;
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
}
static class ViewHolder {
public ItemView view;
}
}