diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/TableViewRowProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/TableViewRowProxy.java index 531dbe5f209..eeb1a72e0db 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/TableViewRowProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/TableViewRowProxy.java @@ -133,7 +133,6 @@ private Object handleEvent(String eventName, Object data) } payload.put(TiC.EVENT_PROPERTY_ROW, this); payload.put(TiC.EVENT_PROPERTY_INDEX, index); - payload.put(TiC.EVENT_PROPERTY_DETAIL, false); if (tableView != null) { payload.put(TiC.EVENT_PROPERTY_SEARCH_MODE, tableView.isFiltered()); diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tableview/TableViewHolder.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tableview/TableViewHolder.java index 4b037137009..4e836e5c1b4 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tableview/TableViewHolder.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tableview/TableViewHolder.java @@ -19,6 +19,7 @@ import org.appcelerator.titanium.view.TiCompositeLayout; import org.appcelerator.titanium.view.TiUIView; +import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.res.ColorStateList; @@ -29,6 +30,7 @@ import android.graphics.drawable.PaintDrawable; import android.os.Build; import android.util.TypedValue; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; @@ -121,6 +123,7 @@ private void reset() this.leftImage.setVisibility(View.GONE); this.title.setVisibility(View.GONE); this.rightImage.setVisibility(View.GONE); + this.rightImage.setOnTouchListener(null); this.border.reset(); } @@ -130,6 +133,7 @@ private void reset() * @param proxy TableViewRowProxy to bind. * @param selected Is row selected. */ + @SuppressLint("ClickableViewAccessibility") public void bind(final TableViewRowProxy proxy, final boolean selected) { reset(); @@ -259,6 +263,24 @@ public void bind(final TableViewRowProxy proxy, final boolean selected) } else if (hasDetail) { this.rightImage.setImageDrawable(disclosureDrawable); this.rightImage.setVisibility(View.VISIBLE); + this.rightImage.setOnTouchListener(new View.OnTouchListener() + { + @Override + public boolean onTouch(View v, MotionEvent e) + { + if (e.getAction() == MotionEvent.ACTION_UP) { + final TiUIView view = proxy.peekView(); + + if (view != null) { + final KrollDict data = view.getLastUpEvent(); + + data.put(TiC.EVENT_PROPERTY_DETAIL, true); + proxy.fireEvent(TiC.EVENT_CLICK, data); + } + } + return true; + } + }); } } diff --git a/android/titanium/src/java/org/appcelerator/titanium/view/TiUIView.java b/android/titanium/src/java/org/appcelerator/titanium/view/TiUIView.java index 07942b7aedd..496fd74ecb8 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/view/TiUIView.java +++ b/android/titanium/src/java/org/appcelerator/titanium/view/TiUIView.java @@ -2147,6 +2147,11 @@ protected void disableHWAcceleration() } } + public KrollDict getLastUpEvent() + { + return dictFromEvent(this.lastUpEvent); + } + /** * Retrieve the saved animated scale values, which we store here since Android provides no property * for looking them up.