package com.example.slidingmenu.yujing.client.activity.letter; 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.PrivateLetter; import com.example.slidingmenu.yujing.client.utils.Utils; public class LetterAdapter extends ResourceCursorAdapter{ public LetterAdapter(Context context, int layout, Cursor c, boolean autoRequery) { super(context, layout, c, false); } @Override public ContentValues getItem(int position) { ContentValues values = new ContentValues(); Cursor c = (Cursor) super.getItem(position); values.put(PrivateLetter._id, c.getInt(c.getColumnIndex(PrivateLetter._id))); values.put(PrivateLetter.PrivateLetterID, c.getLong(c.getColumnIndex(PrivateLetter.PrivateLetterID))); values.put(PrivateLetter.name, c.getString(c.getColumnIndex(PrivateLetter.name))); values.put(PrivateLetter.time, c.getInt(c.getColumnIndex(PrivateLetter.time))); values.put(PrivateLetter.photo, c.getString(c.getColumnIndex(PrivateLetter.photo))); values.put(PrivateLetter.PrivateLetterUID, c.getLong(c.getColumnIndex(PrivateLetter.PrivateLetterUID))); values.put(PrivateLetter.isSend, c.getInt(c.getColumnIndex(PrivateLetter.isSend)) == 0 ? false : true); return values; } public void refresh() { this.getCursor().requery(); } @Override public void bindView(View view, Context context, Cursor cursor) { final ContactListItemCache cache = (ContactListItemCache) view.getTag(); cursor.copyStringToBuffer(cursor.getColumnIndex(PrivateLetter.name), cache.nameBuffer); cursor.copyStringToBuffer(cursor.getColumnIndex(PrivateLetter.time), cache.timeBuffer); cursor.copyStringToBuffer(cursor.getColumnIndex(PrivateLetter.content), cache.contentBuffer); boolean bool = cursor.getInt(cursor.getColumnIndex(PrivateLetter.isSend)) == 0 ? true : false; int size = cache.nameBuffer.sizeCopied; int contentSize = cache.contentBuffer.sizeCopied; cache.nameView.setText(cache.nameBuffer.data, 0, size); cache.dateView.setText(Utils.timeFormat(cursor.getInt(cursor.getColumnIndex(PrivateLetter.time)))); cache.contentView.setText(cache.contentBuffer.data, 0, contentSize); if(bool) { cache.sender.setImageResource(R.drawable.log_incoming); } else { cache.sender.setImageResource(R.drawable.log_outgoing); } } @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.letter_name); cache.contentView = (TextView) view.findViewById(R.id.letter_content); cache.thumbView = (ImageView) view.findViewById(R.id.letter_thumb); cache.dateView = (TextView) view.findViewById(R.id.letter_date); cache.sender = (ImageView) view.findViewById(R.id.reciver_sender); view.setTag(cache); return view; } final static class ContactListItemCache { public TextView nameView; public TextView contentView; public TextView dateView; public ImageView thumbView; public ImageView sender; public CharArrayBuffer nameBuffer = new CharArrayBuffer(128); public CharArrayBuffer timeBuffer = new CharArrayBuffer(128); public CharArrayBuffer contentBuffer = new CharArrayBuffer(128); } }