Merge "Fix keyboard navigation in drawer" into ub-contactsdialer-i-dev
am: 3f9e1873a4

Change-Id: I8d42cd17febf7c71b10cad7d63739b43a3ec4867
diff --git a/res/layout/drawer_horizontal_divider.xml b/res/layout/drawer_horizontal_divider.xml
index ca096fa..6e77ed8 100644
--- a/res/layout/drawer_horizontal_divider.xml
+++ b/res/layout/drawer_horizontal_divider.xml
@@ -19,6 +19,7 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="16dp"
+    android:background="@color/navigation_drawer_background_color"
     android:importantForAccessibility="no">
 
     <View
diff --git a/res/layout/nav_drawer_spacer.xml b/res/layout/nav_drawer_spacer.xml
index 45ecfc4..e95f6cd 100644
--- a/res/layout/nav_drawer_spacer.xml
+++ b/res/layout/nav_drawer_spacer.xml
@@ -19,5 +19,5 @@
       android:id="@+id/nav_drawer_spacer"
       android:layout_width="match_parent"
       android:layout_height="@dimen/nav_drawer_spacer_height"
-      android:background="@drawable/drawer_item_background"
+      android:background="@color/navigation_drawer_background_color"
       android:importantForAccessibility="no"/>
\ No newline at end of file
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 00b2810..57ba699 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -276,6 +276,7 @@
                 SharedPreferenceUtil.setHamburgerMenuClickedBefore(PeopleActivity.this);
                 mMenuClickedBefore = true;
             }
+            drawerView.requestFocus();
             invalidateOptionsMenu();
             // Stop search and selection mode like Gmail and Keep. Otherwise, if user switches to
             // another fragment in navigation drawer, the current search/selection mode will be
diff --git a/src/com/android/contacts/drawer/DrawerAdapter.java b/src/com/android/contacts/drawer/DrawerAdapter.java
index fcb41c6..963c125 100644
--- a/src/com/android/contacts/drawer/DrawerAdapter.java
+++ b/src/com/android/contacts/drawer/DrawerAdapter.java
@@ -21,7 +21,6 @@
 import android.support.annotation.LayoutRes;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
 import android.widget.ImageView;
@@ -88,7 +87,6 @@
     private List<BaseDrawerItem> mMiscItems = new ArrayList<>();
 
     private List<BaseDrawerItem> mItemsList = new ArrayList<>();
-    private OnClickListener mListener;
     private AccountDisplayInfoFactory mAccountDisplayFactory;
 
     public DrawerAdapter(Activity activity) {
@@ -145,10 +143,6 @@
         mItemsList.add(mNavSpacerItem);
     }
 
-    public void setItemOnClickListener(OnClickListener listener) {
-        mListener = listener;
-    }
-
     public void setGroups(List<GroupListItem> groupListItems, boolean areGroupWritable) {
         final ArrayList<GroupEntryItem> groupEntries = new ArrayList<GroupEntryItem>();
         for (GroupListItem group : groupListItems) {
@@ -228,7 +222,6 @@
     private View getPrimaryItemView(PrimaryItem item, View result, ViewGroup parent) {
         if (result == null) {
             result = mInflater.inflate(R.layout.drawer_primary_item, parent, false);
-            result.setOnClickListener(mListener);
         }
         final TextView titleView = (TextView) result.findViewById(R.id.title);
         titleView.setText(item.text);
@@ -258,7 +251,6 @@
         if (result == null || !(result.getTag() instanceof GroupEntryItem)) {
             result = mInflater.inflate(R.layout.drawer_item, parent, false);
             result.setId(item.id);
-            result.setOnClickListener(mListener);
         }
 
         final GroupListItem groupListItem = item.group;
@@ -281,7 +273,6 @@
         if (result == null || !(result.getTag() instanceof ContactListFilter)) {
             result = mInflater.inflate(R.layout.drawer_item, parent, false);
             result.setId(item.id);
-            result.setOnClickListener(mListener);
         }
         final ContactListFilter account = item.account;
         final TextView textView = ((TextView) result.findViewById(R.id.title));
@@ -307,7 +298,6 @@
     private View getDrawerItemView(BaseDrawerItem item, View result, ViewGroup parent) {
         if (result == null) {
             result = mInflater.inflate(R.layout.drawer_item, parent, false);
-            result.setOnClickListener(mListener);
         }
 
         final TextView textView = (TextView) result.findViewById(R.id.title);
diff --git a/src/com/android/contacts/drawer/DrawerFragment.java b/src/com/android/contacts/drawer/DrawerFragment.java
index 6acd170..0aaa262 100644
--- a/src/com/android/contacts/drawer/DrawerFragment.java
+++ b/src/com/android/contacts/drawer/DrawerFragment.java
@@ -31,6 +31,8 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.WindowInsets;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
 import android.widget.FrameLayout;
 import android.widget.ListView;
 
@@ -154,9 +156,9 @@
         mDrawerListView = (ListView) contentView.findViewById(R.id.list);
         mDrawerAdapter = new DrawerAdapter(getActivity());
         mDrawerAdapter.setSelectedContactsView(mCurrentContactsView);
-        mDrawerAdapter.setItemOnClickListener(mOnDrawerItemClickListener);
         loadGroupsAndFilters();
         mDrawerListView.setAdapter(mDrawerAdapter);
+        mDrawerListView.setOnItemClickListener(mOnDrawerItemClickListener);
 
         if (savedInstanceState != null) {
             final ContactsView contactsView =
@@ -221,13 +223,12 @@
         mListener = null;
     }
 
-    private final View.OnClickListener mOnDrawerItemClickListener = new View.OnClickListener() {
+    private final OnItemClickListener mOnDrawerItemClickListener = new OnItemClickListener() {
         @Override
-        public void onClick(View v) {
+        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
             if (mListener == null) {
                 return;
             }
-            mListener.onDrawerItemClicked();
             final int viewId = v.getId();
             if (viewId == R.id.nav_all_contacts) {
                 mListener.onContactsViewSelected(ContactsView.ALL_CONTACTS);
@@ -252,8 +253,9 @@
             } else if (viewId == R.id.nav_help) {
                 mListener.onLaunchHelpFeedback();
             } else {
-                throw new IllegalStateException("Unknown view");
+                return;
             }
+            mListener.onDrawerItemClicked();
         }
     };