I'm displaying the contacts in a Multi-select "Ok, Cancel" dialog box. I've
implemented Filterable for the adapter that displays the contacts in the
dialog. The problem is, once i try and select(check) a contact while i'm
using a type ahead, the check box in that particular position is checked and
not the contact.

The initial screen goes like





After type-ahead,






When I hit backspace, the screen appears as,




This is my activity.

                               Cursor c =
getContentResolver().query(People.CONTENT_URI, PROJECTION,

                                 null, null,
Contacts.People.DEFAULT_SORT_ORDER);

                                startManagingCursor(c);

                                ListAdapter adapter1 = new
ContactListAdapter(this, c);

                                LayoutInflater inflater = (LayoutInflater)
this


.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

                                View view = (View)
inflater.inflate(R.layout.list_view, null);

                                 listView = (ListView)
view.findViewById(R.id.contactlist);

                                 listView.setTextFilterEnabled(true);


listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

                                 listView.setAdapter(adapter1);


listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

                                 listView.setOnItemSelectedListener(this);

                                 alertDialog.setView(view);

The adapter goes like,

public class ContactListAdapter extends CursorAdapter implements Filterable
{

public static final String[] PEOPLE_PROJECTION = new String[] { People._ID,

People.NAME, People.NUMBER };

public ContactListAdapter(Context context, Cursor c) {

super(context, c);

mContent = context.getContentResolver();

}

@Override

public View newView(Context context, Cursor cursor, ViewGroup parent) {

final LayoutInflater inflater = LayoutInflater.from(context);

final TextView view = (TextView) inflater.inflate(

android.R.layout.simple_list_item_multiple_choice, parent, false);

view.setText(cursor.getString(1));

return view;

}

@Override

public void bindView(View view, Context context, Cursor cursor) {

((TextView) view).setTag(cursor.getLong(0));

((TextView) view).setText(cursor.getString(1));

}

@Override

public String convertToString(Cursor cursor) {

return cursor.getString(1);

}

@Override

public Cursor runQueryOnBackgroundThread(CharSequence constraint) {

if (getFilterQueryProvider() != null) {

return getFilterQueryProvider().runQuery(constraint);

}

StringBuilder buffer = null;

String[] args = null;

if (constraint != null) {

buffer = new StringBuilder();

buffer.append("UPPER(");

buffer.append(Contacts.ContactMethods.NAME);

buffer.append(") GLOB ?");

args = new String[] { constraint.toString().toUpperCase() + "*" };

}

return mContent.query(Contacts.People.CONTENT_URI, PEOPLE_PROJECTION,

buffer == null ? null : buffer.toString(), args,

Contacts.People.DEFAULT_SORT_ORDER);

}

private ContentResolver mContent;

}





Any help in this is welcome.

Gyan.

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to