RecipientAlternatesAdapter.java revision 97d7768576ff27d779d68f77e23925b69f3290bc
1
2package com.android.ex.chips;
3
4import com.android.ex.chips.BaseRecipientAdapter.EmailQuery;
5
6import android.content.Context;
7import android.database.Cursor;
8import android.provider.ContactsContract.CommonDataKinds.Email;
9import android.view.LayoutInflater;
10import android.view.View;
11import android.view.ViewGroup;
12import android.widget.CursorAdapter;
13import android.widget.TextView;
14
15public class RecipientAlternatesAdapter extends CursorAdapter {
16    private final LayoutInflater mLayoutInflater;
17
18    private final int mLayoutId;
19
20    private final int mSelectedLayoutId;
21
22    private final long mCurrentId;
23
24    public RecipientAlternatesAdapter(Context context, long contactId, long currentId, int viewId,
25            int selectedViewId) {
26        super(context, context.getContentResolver().query(Email.CONTENT_URI, EmailQuery.PROJECTION,
27                Email.CONTACT_ID + " =?", new String[] {
28                    String.valueOf(contactId)
29                }, null), 0);
30        mLayoutInflater = LayoutInflater.from(context);
31        mLayoutId = viewId;
32        mSelectedLayoutId = selectedViewId;
33        mCurrentId = currentId;
34    }
35
36    @Override
37    public long getItemId(int position) {
38        Cursor c = getCursor();
39        c.moveToPosition(position);
40        return c.getLong(EmailQuery.DATA_ID);
41    }
42
43    public RecipientEntry getRecipientEntry(int position) {
44        Cursor c = getCursor();
45        c.moveToPosition(position);
46        return RecipientEntry.constructTopLevelEntry(c.getString(EmailQuery.NAME), c
47                .getString(EmailQuery.ADDRESS), c.getLong(EmailQuery.CONTACT_ID), c
48                .getLong(EmailQuery.DATA_ID), c.getString(EmailQuery.PHOTO_THUMBNAIL_URI));
49    }
50
51    @Override
52    public View getView(int position, View convertView, ViewGroup parent) {
53        Cursor c = getCursor();
54        c.moveToPosition(position);
55        if (convertView == null) {
56            convertView = newView(c.getLong(EmailQuery.DATA_ID) == mCurrentId);
57        }
58
59        bindView(convertView, convertView.getContext(), getCursor());
60        return convertView;
61    }
62
63    @Override
64    public void bindView(View view, Context context, Cursor cursor) {
65        TextView destination = (TextView) view.findViewById(android.R.id.text1);
66        destination.setText(cursor.getString(EmailQuery.ADDRESS));
67    }
68
69    @Override
70    public View newView(Context context, Cursor cursor, ViewGroup parent) {
71        return newView(false);
72    }
73
74    private View newView(boolean isSelected) {
75        return isSelected ? mLayoutInflater.inflate(mSelectedLayoutId, null) : mLayoutInflater
76                .inflate(mLayoutId, null);
77    }
78}
79