Fix race condition.

Crash was reported where the checked item position had yet to be
set when the list tried to get it. This uses a listener to make sure
that the checked item isnt set in the list until the adapter has it.

Change-Id: I2b5170ab9440bbb0a69989657313b1a4b6d653cd
diff --git a/src/com/android/ex/chips/RecipientAlternatesAdapter.java b/src/com/android/ex/chips/RecipientAlternatesAdapter.java
index 3d2c87b..792fdcc 100644
--- a/src/com/android/ex/chips/RecipientAlternatesAdapter.java
+++ b/src/com/android/ex/chips/RecipientAlternatesAdapter.java
@@ -37,7 +37,10 @@
 
     private int mCheckedItemPosition = -1;
 
-    public RecipientAlternatesAdapter(Context context, long contactId, long currentId, int viewId) {
+    private OnCheckedItemChangedListener mCheckedItemChangedListener;
+
+    public RecipientAlternatesAdapter(Context context, long contactId, long currentId, int viewId,
+            OnCheckedItemChangedListener listener) {
         super(context, context.getContentResolver().query(Email.CONTENT_URI, EmailQuery.PROJECTION,
                 Email.CONTACT_ID + " =?", new String[] {
                     String.valueOf(contactId)
@@ -45,6 +48,7 @@
         mLayoutInflater = LayoutInflater.from(context);
         mLayoutId = viewId;
         mCurrentId = currentId;
+        mCheckedItemChangedListener = listener;
     }
 
     @Override
@@ -71,6 +75,9 @@
         }
         if (cursor.getLong(EmailQuery.DATA_ID) == mCurrentId) {
             mCheckedItemPosition = position;
+            if (mCheckedItemChangedListener != null) {
+                mCheckedItemChangedListener.onCheckedItemChanged(mCheckedItemPosition);
+            }
         }
         bindView(convertView, convertView.getContext(), cursor);
         return convertView;
@@ -109,10 +116,7 @@
         return mLayoutInflater.inflate(mLayoutId, null);
     }
 
-    /**
-     * Get the position of the item that should be checked.
-     */
-    public int getCheckedItemPosition() {
-        return mCheckedItemPosition;
+    /*package*/ static interface OnCheckedItemChangedListener {
+        public void onCheckedItemChanged(int position);
     }
 }