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<http://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.



CONFIDENTIALITY NOTICE: This communication may contain privileged or
other confidential information.
If you have received it in error, please advise the sender by reply
email and immediately delete the message and any attachments without
copying or disclosing the contents.

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

<<inline: image003.png>>

<<inline: image002.png>>

<<inline: image001.png>>

Reply via email to