package com.example.slidingmenu.yujing.client.activity.friends;
import android.content.ContentValues;
import android.content.Context;
import android.database.CharArrayBuffer;
import android.database.Cursor;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ResourceCursorAdapter;
import android.widget.TextView;
import com.example.slidingmenu.R;
import com.example.slidingmenu.yujing.client.database.table.Friend;
public class AllFriendsAdapter extends ResourceCursorAdapter{
public AllFriendsAdapter(Context context, int layout, Cursor c,
boolean autoRequery) {
super(context, layout, c, false);
}
public void refresh() {
this.getCursor().requery();
}
@Override
public ContentValues getItem(int position) {
ContentValues values = new ContentValues();
Cursor c = (Cursor) super.getItem(position);
values.put(Friend._id, c.getInt(c.getColumnIndex(Friend._id)));
values.put(Friend.ID, c.getString(c.getColumnIndex(Friend.ID)));
values.put(Friend.name, c.getString(c.getColumnIndex(Friend.name)));
values.put(Friend.mobile, c.getString(c.getColumnIndex(Friend.mobile)));
values.put(Friend.sex, c.getString(c.getColumnIndex(Friend.sex)));
values.put(Friend.photo, c.getString(c.getColumnIndex(Friend.photo)));
values.put(Friend.UID, c.getString(c.getColumnIndex(Friend.UID)));
values.put(Friend.address, c.getString(c.getColumnIndex(Friend.address)));
values.put(Friend.state, c.getString(c.getColumnIndex(Friend.state)));
return values;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
final ContactListItemCache cache = (ContactListItemCache) view.getTag();
cursor.copyStringToBuffer(cursor.getColumnIndex(Friend.name), cache.nameBuffer);
cursor.copyStringToBuffer(cursor.getColumnIndex(Friend.mobile), cache.numberBuffer);
int size = cache.nameBuffer.sizeCopied;
int numberSize = cache.numberBuffer.sizeCopied;
cache.nameView.setText(cache.nameBuffer.data, 0, size);
cache.numberView.setText(cache.numberBuffer.data, 0, numberSize);
if(cursor.getInt(cursor.getColumnIndex(Friend.state)) == Friend.ON_LINE){
cache.nameView.setText(cache.nameView.getText() + "(在线)");
} else {
cache.nameView.setText(cache.nameBuffer.data, 0, size);
}
cache.numberView.setTextColor(R.color.gray);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = super.newView(context, cursor, parent);
ContactListItemCache cache = new ContactListItemCache();
cache.nameView = (TextView) view.findViewById(R.id.friends_name);
cache.numberView = (TextView) view.findViewById(R.id.friends_status);
cache.thunbView = (ImageView) view.findViewById(R.id.friends_thumb);
view.setTag(cache);
return view;
}
final static class ContactListItemCache {
public TextView nameView;
public TextView numberView;
public ImageView thunbView;
public CharArrayBuffer nameBuffer = new CharArrayBuffer(128);
public CharArrayBuffer numberBuffer = new CharArrayBuffer(128);
}
}