private void unbindListItems() { final ListView listView = getListView(); final int count = listView.getChildCount(); for (int i = 0; i < count; i++) { mListAdapter.unbindView(listView.getChildAt(i)); } }
@Override public void onLoadFinished( Loader<ArrayList<RecipientsListLoader.Result>> loader, ArrayList<RecipientsListLoader.Result> data) { // We have an old list, get rid of it before we start again if (mListAdapter != null) { mListAdapter.notifyDataSetInvalidated(); unbindListItems(); } // Hide the progress indicator mProgressSpinner.setVisibility(View.GONE); // Create and set the list adapter mListAdapter = new SelectRecipientsListAdapter(this, data, mCheckedPhoneNumbers); if (getIntent() != null) { String[] initialRecipients = getIntent().getStringArrayExtra(EXTRA_RECIPIENTS); if (initialRecipients != null && mMode == MODE_DEFAULT) { for (String recipient : initialRecipients) { addPhoneNumberToSelectionList(data, recipient); } invalidateOptionsMenu(); } setIntent(null); } else { // loader was re-triggered, retain previous selection list HashSet<PhoneNumber> selectedNumbers = mCheckedPhoneNumbers; mCheckedPhoneNumbers = new HashSet<PhoneNumber>(); for (PhoneNumber number : selectedNumbers) { addPhoneNumberToSelectionList(data, number); } } if (mListAdapter == null) { // We have no numbers to show, indicate it TextView emptyText = (TextView) getListView().getEmptyView(); emptyText.setText(mMobileOnly ? R.string.no_recipients_mobile_only : R.string.no_recipients); } else { setListAdapter(mListAdapter); getListView().setRecyclerListener(mListAdapter); } }
@Override public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) { RecipientsListLoader.Result item = (RecipientsListLoader.Result) adapter.getItemAtPosition(position); if (mMode == MODE_VCARD) { flipVCardNumberState(item.phoneNumber); } else { if (item.group != null) { checkGroup(item.group, !item.group.isChecked()); } else { selectPhoneNumber(item.phoneNumber, !item.phoneNumber.isChecked()); updateGroupCheckStateForNumber(item.phoneNumber, null); } } invalidateOptionsMenu(); mListAdapter.notifyDataSetChanged(); }
@Override public void onLoaderReset(Loader<ArrayList<RecipientsListLoader.Result>> data) { mListAdapter.notifyDataSetInvalidated(); }