Merge "Show separate pressed effect for primary/secondary actions"
diff --git a/res/layout-sw580dp-w1000dp/contact_detail_list_item.xml b/res/layout-sw580dp-w1000dp/contact_detail_list_item.xml
index 22f0412..4cb4096 100644
--- a/res/layout-sw580dp-w1000dp/contact_detail_list_item.xml
+++ b/res/layout-sw580dp-w1000dp/contact_detail_list_item.xml
@@ -17,120 +17,115 @@
*/
-->
+<!-- Note: padding might be controlled programatically -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="vertical">
+ android:orientation="horizontal"
+ android:gravity="center_vertical"
+ android:minHeight="@dimen/detail_min_line_item_height">
- <LinearLayout
- android:layout_width="match_parent"
+ <!-- Note: padding might be controlled programatically -->
+ <com.android.contacts.detail.PrimaryActionViewContainer
+ android:id="@+id/primary_action_view_container"
+ android:layout_width="0dip"
+ android:layout_weight="1"
android:layout_height="wrap_content"
- android:gravity="center_vertical"
- android:orientation="vertical"
- android:minHeight="@dimen/detail_min_line_item_height">
+ android:orientation="horizontal"
+ android:layout_gravity="center_vertical"
+ android:focusable="true"
+ android:background="?android:attr/selectableItemBackground">
<LinearLayout
- android:layout_width="match_parent"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_gravity="center_vertical">
+ android:layout_gravity="center_vertical"
+ android:layout_weight="1"
+ android:paddingLeft="12dip"
+ android:orientation="vertical">
- <FrameLayout
- android:layout_width="@dimen/detail_item_type_width"
- android:layout_height="@dimen/detail_min_line_item_height"
- android:paddingLeft="@dimen/detail_item_side_margin">
+ <TextView
+ android:id="@+id/data"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
- <TextView
- android:id="@+id/kind"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:visibility="gone" />
+ <TextView
+ android:id="@+id/footer"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:visibility="gone" />
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:orientation="horizontal">
+ </LinearLayout>
- <TextView
- android:id="@+id/type"
- style="@style/ContactDetailItemType" />
+ <ImageView
+ android:id="@+id/presence_icon"
+ android:layout_width="32dip"
+ android:layout_height="@dimen/detail_min_line_item_height"
+ android:layout_marginLeft="5dip"
+ android:gravity="center"
+ android:scaleType="centerInside" />
- <View
- android:id="@+id/primary_indicator"
- android:layout_width="16dip"
- android:layout_height="16dip"
- android:visibility="gone"
- android:layout_gravity="center_vertical"
- android:background="@drawable/ic_menu_mark" />
+ <FrameLayout
+ android:layout_width="wrap_content"
+ android:layout_height="@dimen/detail_min_line_item_height"
+ android:paddingLeft="@dimen/detail_item_side_margin"
+ android:paddingRight="@dimen/detail_item_side_margin">
- </LinearLayout>
-
- </FrameLayout>
+ <TextView
+ android:id="@+id/kind"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="gone" />
<LinearLayout
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:layout_weight="1"
- android:paddingLeft="12dip"
- android:orientation="vertical">
+ android:layout_height="match_parent"
+ android:orientation="horizontal">
<TextView
- android:id="@+id/data"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceMedium" />
+ android:id="@+id/type"
+ style="@style/ContactDetailItemType" />
- <TextView
- android:id="@+id/footer"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:visibility="gone" />
+ <View
+ android:id="@+id/primary_indicator"
+ android:layout_width="16dip"
+ android:layout_height="16dip"
+ android:visibility="gone"
+ android:layout_gravity="center_vertical"
+ android:background="@drawable/ic_menu_mark" />
</LinearLayout>
+ </FrameLayout>
+ </com.android.contacts.detail.PrimaryActionViewContainer>
- <ImageView
- android:id="@+id/presence_icon"
- android:layout_width="32dip"
- android:layout_height="@dimen/detail_min_line_item_height"
- android:layout_marginLeft="5dip"
- android:gravity="center"
- android:scaleType="centerInside" />
+ <View
+ android:id="@+id/vertical_divider"
+ android:layout_width="1px"
+ android:layout_height="match_parent"
+ android:layout_marginTop="@dimen/detail_vertical_divider_vertical_margin"
+ android:layout_marginBottom="@dimen/detail_vertical_divider_vertical_margin"
+ android:background="?android:attr/dividerVertical" />
- <View
- android:id="@+id/vertical_divider"
- android:layout_width="1px"
- android:layout_height="match_parent"
- android:layout_marginTop="5dip"
- android:layout_marginBottom="5dip"
- android:layout_marginLeft="14dip"
- android:layout_marginRight="14dip"
- android:background="?android:attr/dividerVertical" />
-
- <FrameLayout
- android:id="@+id/secondary_action_button_container"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:layout_marginTop="10dip"
- android:paddingLeft="@dimen/detail_item_icon_margin"
- android:paddingRight="@dimen/detail_item_icon_margin"
- android:duplicateParentState="false"
- android:background="?android:attr/selectableItemBackground">
-
- <ImageView
- android:id="@+id/secondary_action_button"
- android:layout_width="32dip"
- android:layout_height="match_parent"
- android:layout_centerVertical="true"
- android:gravity="center"
- android:scaleType="center"
- android:duplicateParentState="false" />
-
- </FrameLayout>
- </LinearLayout>
-
- </LinearLayout>
-
+ <!-- Note: padding might be controlled programatically -->
+ <FrameLayout
+ android:id="@+id/secondary_action_view_container"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:paddingLeft="@dimen/detail_item_icon_margin"
+ android:paddingRight="@dimen/detail_item_icon_margin"
+ android:duplicateParentState="false"
+ android:focusable="true"
+ android:background="?android:attr/selectableItemBackground">
+ <ImageView
+ android:id="@+id/secondary_action_button"
+ android:layout_width="32dip"
+ android:layout_height="match_parent"
+ android:layout_centerVertical="true"
+ android:gravity="center"
+ android:scaleType="center"
+ android:duplicateParentState="false" />
+ </FrameLayout>
</LinearLayout>
diff --git a/res/layout/contact_detail_list_item.xml b/res/layout/contact_detail_list_item.xml
index e96b7f0..205bc81 100644
--- a/res/layout/contact_detail_list_item.xml
+++ b/res/layout/contact_detail_list_item.xml
@@ -17,86 +17,100 @@
*/
-->
+<!-- Note: padding might be controlled programatically -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
- android:gravity="center_vertical">
+ android:gravity="center_vertical"
+ android:minHeight="@dimen/detail_min_line_item_height">
- <LinearLayout
+ <!-- Note: padding might be controlled programatically -->
+ <com.android.contacts.detail.PrimaryActionViewContainer
+ android:id="@+id/primary_action_view_container"
android:layout_width="0dip"
- android:layout_height="wrap_content"
android:layout_weight="1"
- android:orientation="vertical"
- android:paddingLeft="8dip"
- android:gravity="center_vertical">
-
- <TextView
- android:id="@+id/kind"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:visibility="gone" />
-
- <TextView
- android:id="@+id/data"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:textAppearance="?android:attr/textAppearanceMedium" />
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:focusable="true"
+ android:background="?android:attr/selectableItemBackground">
<LinearLayout
- android:layout_width="wrap_content"
+ android:layout_width="0dip"
android:layout_height="wrap_content"
- android:orientation="horizontal">
+ android:layout_weight="1"
+ android:orientation="vertical"
+ android:paddingLeft="8dip"
+ android:gravity="center_vertical">
<TextView
- android:id="@+id/type"
- style="@style/ContactDetailItemType" />
+ android:id="@+id/kind"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:visibility="gone" />
- <View
- android:id="@+id/primary_indicator"
- android:layout_width="16dip"
- android:layout_height="16dip"
- android:visibility="gone"
+ <TextView
+ android:id="@+id/data"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
- android:background="@drawable/ic_menu_mark" />
+ android:textAppearance="?android:attr/textAppearanceMedium" />
+
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+
+ <TextView
+ android:id="@+id/type"
+ style="@style/ContactDetailItemType" />
+
+ <View
+ android:id="@+id/primary_indicator"
+ android:layout_width="16dip"
+ android:layout_height="16dip"
+ android:visibility="gone"
+ android:layout_gravity="center_vertical"
+ android:background="@drawable/ic_menu_mark" />
+
+ </LinearLayout>
+
+ <TextView
+ android:id="@+id/footer"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:visibility="gone" />
</LinearLayout>
- <TextView
- android:id="@+id/footer"
- android:layout_width="wrap_content"
+ <ImageView
+ android:id="@+id/presence_icon"
+ android:layout_width="32dip"
android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:visibility="gone" />
-
- </LinearLayout>
-
- <ImageView
- android:id="@+id/presence_icon"
- android:layout_width="32dip"
- android:layout_height="wrap_content"
- android:layout_marginLeft="5dip"
- android:gravity="center"
- android:scaleType="centerInside" />
+ android:layout_marginLeft="5dip"
+ android:gravity="center"
+ android:scaleType="centerInside" />
+ </com.android.contacts.detail.PrimaryActionViewContainer>
<View
android:id="@+id/vertical_divider"
android:layout_width="1dip"
android:layout_height="match_parent"
- android:layout_marginTop="4dip"
- android:layout_marginBottom="4dip"
+ android:layout_marginTop="@dimen/detail_vertical_divider_vertical_margin"
+ android:layout_marginBottom="@dimen/detail_vertical_divider_vertical_margin"
android:background="?android:attr/dividerVertical" />
+ <!-- Note: padding might be controlled programatically -->
<FrameLayout
- android:id="@+id/secondary_action_button_container"
+ android:id="@+id/secondary_action_view_container"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingLeft="@dimen/detail_item_icon_margin"
android:paddingRight="@dimen/detail_item_icon_margin"
- android:duplicateParentState="false"
+ android:focusable="true"
android:background="?android:attr/selectableItemBackground">
<ImageView
android:id="@+id/secondary_action_button"
diff --git a/res/layout/quickcontact_list_item.xml b/res/layout/quickcontact_list_item.xml
index 14d8720..4ffa091 100755
--- a/res/layout/quickcontact_list_item.xml
+++ b/res/layout/quickcontact_list_item.xml
@@ -20,16 +20,18 @@
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/quickcontact_list_item_background"
- android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical">
<LinearLayout
+ android:id="@+id/primary_action_view_container"
android:layout_width="0dip"
android:layout_height="wrap_content"
+ android:minHeight="?android:attr/listPreferredItemHeight"
android:layout_weight="1"
android:orientation="vertical"
android:paddingLeft="16dip"
android:paddingRight="16dip"
- android:gravity="center_vertical">
+ android:gravity="center_vertical"
+ android:background="?android:attr/selectableItemBackground">
<TextView
android:id="@android:id/text1"
android:layout_width="wrap_content"
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 69c89d8..cbac941 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -133,15 +133,16 @@
<!-- Minimum height of a row in the contact detail -->
<dimen name="detail_min_line_item_height">48dip</dimen>
- <!-- Width of a contact detail item type (i.e. Nickname or Website). -->
- <dimen name="detail_item_type_width">164dip</dimen>
-
<!-- Width of height of an icon from a third-party app in the networks section of the contact card. -->
<dimen name="detail_network_icon_size">32dip</dimen>
<!-- Font size for the display name in header of the contact detail page -->
<dimen name="detail_header_name_text_size">36sp</dimen>
+ <!-- Vertical margin for vertical dividers existing between primary data
+ (phone number, email, etc.) and a secondary action button -->
+ <dimen name="detail_vertical_divider_vertical_margin">16dip</dimen>
+
<!-- Padding to be used between a visible scrollbar and the contact list -->
<dimen name="list_visible_scrollbar_padding">40dip</dimen>
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index 946fbe8..c3b2de6 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -117,7 +117,7 @@
import java.util.Map;
public class ContactDetailFragment extends Fragment implements FragmentKeyListener, ViewOverlay,
- OnItemClickListener, SelectAccountDialogFragment.Listener {
+ SelectAccountDialogFragment.Listener {
private static final String TAG = "ContactDetailFragment";
@@ -264,8 +264,7 @@
mListView = (ListView) mView.findViewById(android.R.id.list);
mListView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
- mListView.setOnItemClickListener(this);
- registerForContextMenu(mListView);
+ mListView.setItemsCanFocus(true);
mListView.setOnScrollListener(mVerticalScrollListener);
// Don't set it to mListView yet. We do so later when we bind the adapter.
@@ -1331,29 +1330,37 @@
* {@link DetailViewEntry}
*/
private static class DetailViewCache {
- public TextView kind;
- public TextView type;
- public TextView data;
- public TextView footer;
- public ImageView presenceIcon;
- public ImageView secondaryActionButton;
- public View secondaryActionButtonContainer;
- public View secondaryActionDivider;
- public View primaryIndicator;
+ public final TextView kind;
+ public final TextView type;
+ public final TextView data;
+ public final TextView footer;
+ public final ImageView presenceIcon;
+ public final ImageView secondaryActionButton;
+ public final View primaryActionViewContainer;
+ public final View secondaryActionViewContainer;
+ public final View secondaryActionDivider;
+ public final View primaryIndicator;
- public DetailViewCache(View view, OnClickListener secondaryActionClickListener) {
+ public DetailViewCache(View view,
+ OnClickListener primaryActionClickListener,
+ OnClickListener secondaryActionClickListener) {
kind = (TextView) view.findViewById(R.id.kind);
type = (TextView) view.findViewById(R.id.type);
data = (TextView) view.findViewById(R.id.data);
footer = (TextView) view.findViewById(R.id.footer);
primaryIndicator = view.findViewById(R.id.primary_indicator);
presenceIcon = (ImageView) view.findViewById(R.id.presence_icon);
+
+ primaryActionViewContainer = view.findViewById(R.id.primary_action_view_container);
+ primaryActionViewContainer.setOnClickListener(primaryActionClickListener);
+
+ secondaryActionViewContainer = view.findViewById(
+ R.id.secondary_action_view_container);
+ secondaryActionViewContainer.setOnClickListener(
+ secondaryActionClickListener);
secondaryActionButton = (ImageView) view.findViewById(
R.id.secondary_action_button);
- secondaryActionButtonContainer = view.findViewById(
- R.id.secondary_action_button_container);
- secondaryActionButtonContainer.setOnClickListener(
- secondaryActionClickListener);
+
secondaryActionDivider = view.findViewById(R.id.vertical_divider);
}
}
@@ -1494,15 +1501,16 @@
v = mInflater.inflate(R.layout.contact_detail_list_item, parent, false);
// Cache the children
- viewCache = new DetailViewCache(v, mSecondaryActionClickListener);
+ viewCache = new DetailViewCache(v,
+ mPrimaryActionClickListener, mSecondaryActionClickListener);
v.setTag(viewCache);
}
- bindDetailView(v, entry);
+ bindDetailView(position, v, entry);
return v;
}
- private void bindDetailView(View view, DetailViewEntry entry) {
+ private void bindDetailView(int position, View view, DetailViewEntry entry) {
final Resources resources = mContext.getResources();
DetailViewCache views = (DetailViewCache) view.getTag();
@@ -1538,6 +1546,12 @@
presenceIconView.setVisibility(View.GONE);
}
+ final PrimaryActionViewContainer primaryActionButtonContainer =
+ (PrimaryActionViewContainer) views.primaryActionViewContainer;
+ primaryActionButtonContainer.setTag(entry);
+ primaryActionButtonContainer.setPosition(position);
+ registerForContextMenu(primaryActionButtonContainer);
+
// Set the secondary action button
final ImageView secondaryActionView = views.secondaryActionButton;
Drawable secondaryActionIcon = null;
@@ -1551,20 +1565,30 @@
resources.getDrawable(R.drawable.sym_action_audiochat_holo_light);
}
+ final View secondaryActionViewContainer = views.secondaryActionViewContainer;
if (entry.secondaryIntent != null && secondaryActionIcon != null) {
secondaryActionView.setImageDrawable(secondaryActionIcon);
- views.secondaryActionButtonContainer.setTag(entry);
- views.secondaryActionButtonContainer.setVisibility(View.VISIBLE);
+ secondaryActionViewContainer.setTag(entry);
+ secondaryActionViewContainer.setVisibility(View.VISIBLE);
views.secondaryActionDivider.setVisibility(View.VISIBLE);
} else {
- views.secondaryActionButtonContainer.setVisibility(View.GONE);
+ secondaryActionViewContainer.setVisibility(View.GONE);
views.secondaryActionDivider.setVisibility(View.GONE);
}
- view.setPadding(entry.isInSubSection() ? mViewEntryDimensions.getWidePaddingLeft() :
- mViewEntryDimensions.getPaddingLeft(),
+ // Right padding should not have "pressed" effect.
+ view.setPadding(0, 0, mViewEntryDimensions.getPaddingRight(), 0);
+ // Top, left, and bottom paddings should have "pressed" effect.
+ primaryActionButtonContainer.setPadding(entry.isInSubSection() ?
+ mViewEntryDimensions.getWidePaddingLeft() :
+ mViewEntryDimensions.getPaddingLeft(),
mViewEntryDimensions.getPaddingTop(),
- mViewEntryDimensions.getPaddingRight(),
+ 0,
+ mViewEntryDimensions.getPaddingBottom());
+ secondaryActionViewContainer.setPadding(
+ secondaryActionViewContainer.getPaddingLeft(),
+ mViewEntryDimensions.getPaddingTop(),
+ secondaryActionViewContainer.getPaddingRight(),
mViewEntryDimensions.getPaddingBottom());
}
@@ -1579,12 +1603,22 @@
}
}
- private OnClickListener mSecondaryActionClickListener = new OnClickListener() {
+ private final OnClickListener mPrimaryActionClickListener = new OnClickListener() {
@Override
- public void onClick(View v) {
+ public void onClick(View view) {
if (mListener == null) return;
- if (v == null) return;
- final ViewEntry entry = (ViewEntry) v.getTag();
+ final ViewEntry entry = (ViewEntry) view.getTag();
+ if (entry == null) return;
+ entry.click(view, mListener);
+ }
+ };
+
+ private final OnClickListener mSecondaryActionClickListener = new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ if (mListener == null) return;
+ if (view == null) return;
+ final ViewEntry entry = (ViewEntry) view.getTag();
if (entry == null || !(entry instanceof DetailViewEntry)) return;
final DetailViewEntry detailViewEntry = (DetailViewEntry) entry;
final Intent intent = detailViewEntry.secondaryIntent;
@@ -1650,14 +1684,6 @@
}
@Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- if (mListener == null) return;
- final ViewEntry entry = mAdapter.getItem(position);
- if (entry == null) return;
- entry.click(view, mListener);
- }
-
- @Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, view, menuInfo);
diff --git a/src/com/android/contacts/detail/PrimaryActionViewContainer.java b/src/com/android/contacts/detail/PrimaryActionViewContainer.java
new file mode 100644
index 0000000..a342884
--- /dev/null
+++ b/src/com/android/contacts/detail/PrimaryActionViewContainer.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.contacts.detail;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.ContextMenu.ContextMenuInfo;
+import android.widget.AdapterView;
+import android.widget.LinearLayout;
+import android.widget.ListView;
+
+/**
+ * Custom {@link LinearLayout} which remembers its position in the {@link ListView}. Should be
+ * used for primary touch targets in {@link ContactDetailFragment}.
+ */
+/* package */ class PrimaryActionViewContainer extends LinearLayout {
+
+ private ContextMenuInfo mContextMenuInfo;
+
+ public PrimaryActionViewContainer(Context context) {
+ super(context);
+ }
+
+ public PrimaryActionViewContainer(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public PrimaryActionViewContainer(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ public void setPosition(int position) {
+ mContextMenuInfo = new AdapterView.AdapterContextMenuInfo(this, position, -1);
+ }
+
+ @Override
+ public ContextMenuInfo getContextMenuInfo() {
+ return mContextMenuInfo;
+ }
+}
\ No newline at end of file
diff --git a/src/com/android/contacts/quickcontact/QuickContactListFragment.java b/src/com/android/contacts/quickcontact/QuickContactListFragment.java
index 18c6ef5..1c36ae1 100644
--- a/src/com/android/contacts/quickcontact/QuickContactListFragment.java
+++ b/src/com/android/contacts/quickcontact/QuickContactListFragment.java
@@ -50,7 +50,8 @@
mFragmentContainer = (LinearLayout) inflater.inflate(R.layout.quickcontact_list_fragment,
container, false);
mListView = (ListView) mFragmentContainer.findViewById(R.id.list);
- mListView.setOnItemClickListener(mItemClickListener);
+ mListView.setItemsCanFocus(true);
+
mFragmentContainer.setOnClickListener(mOutsideClickListener);
configureAdapter();
return mFragmentContainer;
@@ -98,10 +99,14 @@
android.R.id.text1);
final TextView text2 = (TextView) resultView.findViewById(
android.R.id.text2);
+ final View primaryActionContainer = resultView.findViewById(
+ R.id.primary_action_view_container);
final ImageView alternateActionButton = (ImageView) resultView.findViewById(
R.id.secondary_action_button);
final View alternateActionDivider = resultView.findViewById(R.id.vertical_divider);
+ primaryActionContainer.setOnClickListener(mPrimaryActionClickListener);
+ primaryActionContainer.setTag(action);
alternateActionButton.setOnClickListener(mSecondaryActionClickListener);
alternateActionButton.setTag(action);
@@ -112,12 +117,20 @@
text1.setText(action.getBody());
text2.setText(action.getSubtitle());
- resultView.setTag(action);
return resultView;
}
});
}
+ /** A data item (e.g. phone number) was clicked */
+ protected final OnClickListener mPrimaryActionClickListener = new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ final Action action = (Action) v.getTag();
+ if (mListener != null) mListener.onItemClicked(action, false);
+ }
+ };
+
/** A secondary action (SMS) was clicked */
protected final OnClickListener mSecondaryActionClickListener = new OnClickListener() {
@Override
@@ -127,16 +140,6 @@
}
};
- /** A data item (e.g. phone number) was clicked */
- private final AbsListView.OnItemClickListener mItemClickListener =
- new AbsListView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- final Action action = (Action) view.getTag();
- if (mListener != null) mListener.onItemClicked(action, false);
- }
- };
-
private final OnClickListener mOutsideClickListener = new OnClickListener() {
@Override
public void onClick(View v) {