hi guys,
i have implemented a Custom CursorAdapter which will display all the
contacts with there images.
this is my code and it is working fine. now i want to have a Search
for this screen. i have tried a lot but couldn't find a way out.
so could some one please help me out ????
public class Contacts extends ListActivity {
static final String[] cat = Constants.DEFAULT_CATEGORIES;
static int[] id;
static List<Long> contactId;
DisplayContacts dispCont;
List<String> number;
Map<String, String> combination = new HashMap<String, String>();
String isDisplayDetails;
ProgressDialog dialog;
private class DisplayContacts extends SimpleCursorAdapter implements
Filterable {
private LayoutInflater mInflater;
Context mCtx;
public DisplayContacts(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
// TODO Auto-generated constructor stub
mInflater = LayoutInflater.from(context);
this.mCtx = context;
}
@Override
public void bindView(View view, Context context, Cursor c) {
// TODO Auto-generated method stub
// int idCol = c.getColumnIndex(Phones._ID);
// try {
int nameCol = c.getColumnIndex(Phones.NAME);
int numCol = c.getColumnIndex(Phones.NUMBER);
int foreign = c.getColumnIndex(Phones.PERSON_ID);
String name = c.getString(nameCol);
String number = c.getString(numCol);
// long id = c.getLong(idCol);
long phoneForeign = c.getLong(foreign);
// View v = mInflater.inflate(R.layout.contacts,
parent, false);
TextView name_text = (TextView)
view.findViewById(R.id.contactName);
if (name_text != null) {
name_text.setText(name);
}
TextView num_text = (TextView)
view.findViewById(R.id.number);
if (num_text != null) {
num_text.setText(number);
}
// set the profile picture
ImageView profile = (ImageView)
view.findViewById(R.id.imgContact);
if (profile != null) {
// Uri uri =
ContentUris.withAppendedId(People.CONTENT_URI,
// id);
Cursor cur =
getContentResolver().query(Photos.CONTENT_URI,
null, Photos.PERSON_ID + "='" +
phoneForeign + "'",
null, null);
byte[] b = null;
if (cur != null) {
if (cur.moveToNext()) {
int imgColumn =
cur.getColumnIndex(Photos.DATA);
b = cur.getBlob(imgColumn);
}
}
Bitmap bm = null;
if (b != null) {
ByteArrayInputStream bytes = new
ByteArrayInputStream(b);
BitmapDrawable bmd = new
BitmapDrawable(bytes);
bm = bmd.getBitmap();
profile.setImageBitmap(bm);
} else {
profile.setImageResource(R.drawable.defaultcontact);
}
ImageView indicator = (ImageView)
view.findViewById(R.id.is);
boolean assign = isAssign(number);
if (assign) {
// set the profile picture
indicator.setImageResource(R.drawable.ok);
} else {
indicator.setImageResource(R.drawable.delete);
}
}
dialog.dismiss();
/*
* } finally { if (c != null) { c.close(); } }
*/
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return super.getItem(position);
}
@Override
public Cursor runQueryOnBackgroundThread(CharSequence
constraint) {
// TODO Auto-generated method stub
if (getFilterQueryProvider() != null) {
return
getFilterQueryProvider().runQuery(constraint);
}
StringBuilder buffer = null;
String[] args = null;
if (constraint != null) {
buffer = new StringBuilder();
buffer.append("UPPER(");
buffer.append(People.NAME);
buffer.append(") GLOB ?");
args = new String[] {
constraint.toString().toUpperCase() + "*" };
}
return
mCtx.getContentResolver().query(Phones.CONTENT_URI, null,
buffer == null ? null :
buffer.toString(), args,
Phones.NAME + " ASC");
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setTitle("Color Eye D - Contacts");
dialog = ProgressDialog.show(Contacts.this, "",
"Loading. Please wait...", true);
Cursor cursor = getContentResolver().query(Phones.CONTENT_URI,
null,
null, null, Phones.NAME + " ASC");
startManagingCursor(cursor);
String[] columns = new String[] { Phones.NAME, Phones.NUMBER };
int[] names = new int[] { R.id.contactName, R.id.number };
dispCont = new DisplayContacts(this, R.layout.contacts, cursor,
columns, names);
setListAdapter(dispCont);
// setListAdapter(new DisplayContacts(this));
registerForContextMenu(getListView());
// cursor.close();
}
}
regards,
Mike
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en