package com.mcxiaoke.minicat.adapter;
import android.content.Context;
import android.database.Cursor;
import android.text.TextPaint;
import android.util.SparseBooleanArray;
import android.view.View;
import android.view.ViewGroup;
import com.mcxiaoke.minicat.R;
import com.mcxiaoke.minicat.dao.model.UserModel;
import java.util.ArrayList;
/**
* @author mcxiaoke
* @version 2.1 2012.02.27
*/
public class UserChooseCursorAdapter extends BaseCursorAdapter {
private ArrayList<Boolean> mStates;
private SparseBooleanArray mStateMap;
public UserChooseCursorAdapter(Context context) {
super(context, null);
initialize();
}
public UserChooseCursorAdapter(Context context, Cursor c) {
super(context, c);
initialize();
}
private void initialize() {
mStates = new ArrayList<Boolean>();
mStateMap = new SparseBooleanArray();
}
public ArrayList<Boolean> getCheckedStates() {
return mStates;
}
public void setItemChecked(int position, boolean checked) {
mStateMap.put(position, checked);
notifyDataSetChanged();
}
@Override
protected int getLayoutId() {
return R.layout.list_item_chooseuser;
}
private void setTextStyle(UserCheckBoxViewHolder holder) {
TextPaint tp = holder.nameText.getPaint();
tp.setFakeBoldText(true);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = mInflater.inflate(getLayoutId(), null);
UserCheckBoxViewHolder holder = new UserCheckBoxViewHolder(view);
setTextStyle(holder);
view.setTag(holder);
return view;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
View row = view;
final UserCheckBoxViewHolder holder = (UserCheckBoxViewHolder) row
.getTag();
final UserModel u = UserModel.from(cursor);
String headUrl = u.getProfileImageUrlLarge();
mImageLoader.displayImage(headUrl, holder.headIcon);
holder.lockIcon.setVisibility(u.isProtect() ? View.VISIBLE : View.GONE);
holder.nameText.setText(u.getScreenName());
holder.idText.setText("(" + u.getId() + ")");
holder.genderText.setText(u.getGender());
holder.locationText.setText(u.getLocation());
Boolean b = mStateMap.get(cursor.getPosition());
holder.checkBox.setChecked(Boolean.TRUE == b);
}
}