package com.mcxiaoke.minicat.adapter;
import android.content.Context;
import android.database.Cursor;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import com.mcxiaoke.minicat.AppContext;
import com.mcxiaoke.minicat.R;
import com.mcxiaoke.minicat.dao.model.StatusModel;
import com.mcxiaoke.minicat.ui.widget.ItemView;
/**
* @author mcxiaoke
* @version 2.1 2012.02.27
*/
public class StatusCursorAdapter extends BaseCursorAdapter {
public static final String TAG = StatusCursorAdapter.class.getSimpleName();
private static final int NONE = 0;
private static final int MENTION = 1;
private static final int SELF = 2;
private static final int[] TYPES = new int[]{NONE, MENTION, SELF,};
private int mMentionedBgColor;// = 0x332266aa;
private boolean colored;
public StatusCursorAdapter(Context context, boolean colored) {
super(context, null);
initialize(context, colored);
}
private void log(String message) {
Log.d(TAG, message);
}
public void initialize(Context context, boolean colored) {
this.colored = colored;
mMentionedBgColor = mContext.getResources().getColor(R.color.list_item_status_mention_highlight);
}
public void setColored(boolean colored) {
this.colored = colored;
}
@Override
public int getItemViewType(int position) {
final Cursor cursor = (Cursor) getItem(position);
if (cursor == null) {
return NONE;
}
final StatusModel s = StatusModel.from(cursor);
if (s == null) {
return NONE;
}
if (s.getType() == StatusModel.TYPE_MENTIONS
|| s.getSimpleText().contains("@" + AppContext.getScreenName())) {
return MENTION;
}
return s.isSelf() ? SELF : NONE;
}
@Override
public int getViewTypeCount() {
return TYPES.length;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return mInflater.inflate(R.layout.list_item_status, parent, false);
}
@Override
public void bindView(View row, Context context, final Cursor cursor) {
final StatusModel s = StatusModel.from(cursor);
final ItemView view = (ItemView) row;
setColor(cursor, view);
UIHelper.setContent(view, s);
UIHelper.setMetaInfo(view, s);
UIHelper.setImageClick(view, s.getUserId());
String headUrl = s.getUserProfileImageUrl();
mImageLoader.displayImage(headUrl, view.getImageView());
}
private void setColor(final Cursor cursor, View row) {
if (!colored) {
return;
}
int itemType = getItemViewType(cursor.getPosition());
switch (itemType) {
case MENTION:
row.setBackgroundColor(mMentionedBgColor);
break;
default:
break;
}
}
}