summaryrefslogtreecommitdiffstats
path: root/src/com/android/contacts/group/local/MemberListActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/contacts/group/local/MemberListActivity.java')
-rw-r--r--src/com/android/contacts/group/local/MemberListActivity.java69
1 files changed, 48 insertions, 21 deletions
diff --git a/src/com/android/contacts/group/local/MemberListActivity.java b/src/com/android/contacts/group/local/MemberListActivity.java
index 723bb60f9..a1f3647de 100644
--- a/src/com/android/contacts/group/local/MemberListActivity.java
+++ b/src/com/android/contacts/group/local/MemberListActivity.java
@@ -278,9 +278,16 @@ public class MemberListActivity extends Activity implements AdapterView.OnItemCl
emptyText = (TextView) findViewById(R.id.emptyText);
mListView = (ListView) findViewById(R.id.member_list);
mListView.setAdapter(mAdapter);
- mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
mListView.setOnItemClickListener(this);
+ mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
mListView.setMultiChoiceModeListener(mMultiChoiceModeListener);
+ mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
+ @Override
+ public boolean onItemLongClick(AdapterView<?> list, View v, int position, long arg3) {
+ mListView.setItemChecked(position, true);
+ return true;
+ }
+ });
uri = getIntent().getParcelableExtra("data");
getContentResolver().registerContentObserver(
Uri.withAppendedPath(LocalGroup.CONTENT_FILTER_URI,
@@ -291,6 +298,15 @@ public class MemberListActivity extends Activity implements AdapterView.OnItemCl
}
@Override
+ public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
+ if (!mListView.isItemChecked(position)) {
+ mListView.setItemChecked(position, true);
+ } else {
+ mListView.setItemChecked(position, false);
+ }
+ }
+
+ @Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.member_list_options, menu);
@@ -389,9 +405,7 @@ public class MemberListActivity extends Activity implements AdapterView.OnItemCl
@Override
protected void onPause() {
super.onPause();
-
mPaused = true;
- mAdapter.changeCursor(null);
}
public void onDestroy() {
@@ -415,15 +429,15 @@ public class MemberListActivity extends Activity implements AdapterView.OnItemCl
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position,
long id, boolean checked) {
- View v = mListView.getChildAt(position);
- String contactId = (String) v.getTag();
- CheckBox checkBox = (CheckBox) v.findViewById(R.id.pick_contact_check);
- if (mRemoveSet.containsKey(contactId)) {
- mRemoveSet.remove(contactId);
- } else {
- mRemoveSet.putString(contactId, contactId);
+ ContactItem item = mAdapter.getItem(position);
+ if (item != null) {
+ if (mRemoveSet.containsKey(item.toString())) {
+ mRemoveSet.remove(item.toString());
+ } else {
+ mRemoveSet.putString(item.toString(), item.toString());
+ }
}
- setCheckStatus(contactId, checkBox);
+ mAdapter.notifyDataSetChanged();
}
@Override
@@ -492,6 +506,15 @@ public class MemberListActivity extends Activity implements AdapterView.OnItemCl
null, null);
}
+ class ContactItem {
+ private long rawContactId;
+
+ @Override
+ public String toString() {
+ return String.valueOf(rawContactId);
+ }
+ }
+
private class QueryHandler extends AsyncQueryHandler {
protected final WeakReference<MemberListActivity> mActivity;
@@ -518,6 +541,20 @@ public class MemberListActivity extends Activity implements AdapterView.OnItemCl
}
@Override
+ public ContactItem getItem(int position) {
+ Cursor cursor = getCursor();
+ ContactItem contactItem;
+ if (cursor != null && cursor.moveToPosition(position)) {
+ contactItem = new ContactItem();
+ contactItem.rawContactId = cursor.getLong(SUMMARY_RAW_CONTACTS_ID_INDEX);
+ } else {
+ return null;
+ }
+
+ return contactItem;
+ }
+
+ @Override
public void bindView(View view, Context context, Cursor cursor) {
long contactId = cursor.getLong(SUMMARY_ID_COLUMN_INDEX);
String lookupId = cursor.getString(SUMMARY_LOOKUP_KEY_INDEX);
@@ -537,7 +574,6 @@ public class MemberListActivity extends Activity implements AdapterView.OnItemCl
String key = String.valueOf(rawContactsId);
setCheckStatus(key, checkBox);
- view.setTag(key);
}
@Override
@@ -647,15 +683,6 @@ public class MemberListActivity extends Activity implements AdapterView.OnItemCl
return icon;
}
- @Override
- public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
- if (!mListView.isItemChecked(position)) {
- mListView.setItemChecked(position, true);
- } else {
- mListView.setItemChecked(position, false);
- }
- }
-
private void pickMembers() {
Intent intent = new Intent(MultiPickContactActivity.ACTION_MULTI_PICK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);