From 7a63a3fc66e0a89266a98f5dd5bc0b46edffb023 Mon Sep 17 00:00:00 2001 From: Gary Mathews Date: Tue, 9 Feb 2021 09:20:47 -0800 Subject: [PATCH 1/3] fix(android): amend child event ListView properties --- .../ti/modules/titanium/ui/widget/listview/ListItemProxy.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListItemProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListItemProxy.java index ab84f23028b..55d9e97bf93 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListItemProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListItemProxy.java @@ -274,8 +274,8 @@ protected TiViewProxy generateViewFromTemplate(TiViewProxy parent, KrollDict tem @Override public void call(Object data) { - if (data instanceof KrollDict) { - final KrollDict payload = new KrollDict((KrollDict) data); + if (data instanceof HashMap) { + final KrollDict payload = new KrollDict((HashMap) data); // Inject row data into events. final ListViewProxy listViewProxy = getListViewProxy(); From c5946511ed45f55d812c55698bd0508dc1863168 Mon Sep 17 00:00:00 2001 From: Gary Mathews Date: Tue, 9 Feb 2021 10:16:46 -0800 Subject: [PATCH 2/3] fix(android): remove duplicate code --- .../ui/widget/listview/ListItemProxy.java | 36 +------------------ 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListItemProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListItemProxy.java index 55d9e97bf93..58ce2833118 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListItemProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListItemProxy.java @@ -274,42 +274,8 @@ protected TiViewProxy generateViewFromTemplate(TiViewProxy parent, KrollDict tem @Override public void call(Object data) { - if (data instanceof HashMap) { - final KrollDict payload = new KrollDict((HashMap) data); - - // Inject row data into events. - final ListViewProxy listViewProxy = getListViewProxy(); - if (listViewProxy != null) { - - final Object parent = getParent(); - if (parent instanceof ListSectionProxy) { - final ListSectionProxy section = (ListSectionProxy) parent; - - // Include section specific properties. - payload.put(TiC.PROPERTY_SECTION, section); - payload.put(TiC.PROPERTY_SECTION_INDEX, listViewProxy.getIndexOfSection(section)); - payload.put(TiC.PROPERTY_ITEM_INDEX, getIndexInSection()); - } - - final String itemId = getProperties().optString(TiC.PROPERTY_ITEM_ID, null); - if (itemId != null) { - - // Include `itemId` if specified. - payload.put(TiC.PROPERTY_ITEM_ID, itemId); - } - - if (template.containsKey(TiC.PROPERTY_BIND_ID)) { - - // Include `bindId` of template if specified. - payload.put(TiC.PROPERTY_BIND_ID, template.getString(TiC.PROPERTY_BIND_ID)); - } - } - - data = payload; - } - // Call callback defined in template. - callback.call(krollObject, new Object[] { data }); + callback.call(krollObject, new Object[] { handleEvent(eventName, data) }); } }); krollObject.setHasListenersForEventType(eventName, true); From 9ada710ebe0ad331b62da9a2538083ff329f4fee Mon Sep 17 00:00:00 2001 From: Gary Mathews Date: Tue, 9 Feb 2021 10:58:44 -0800 Subject: [PATCH 3/3] fix(android): prevent duplicate itemclick event --- .../titanium/ui/widget/listview/ListItemProxy.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListItemProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListItemProxy.java index 58ce2833118..ff956e2a996 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListItemProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListItemProxy.java @@ -44,7 +44,7 @@ public class ListItemProxy extends TiViewProxy private final HashMap binds = new HashMap<>(); private final HashMap childProperties = new HashMap<>(); - private final List ignoredTemplateKeys = new ArrayList<>(); + private final List ignoredTemplateKeys = new ArrayList<>(); public int index; @@ -125,7 +125,7 @@ public TiUIView createView(Activity activity) * @param data Data payload of fired event. * @return Object of event payload. */ - public Object handleEvent(String eventName, Object data) + public Object handleEvent(String eventName, Object data, boolean fireItemClick) { // Inject row data into events. final ListViewProxy listViewProxy = getListViewProxy(); @@ -174,7 +174,7 @@ public Object handleEvent(String eventName, Object data) data = payload; // Fire `itemclick` event on ListView. - if (eventName.equals(TiC.EVENT_CLICK)) { + if (fireItemClick && eventName.equals(TiC.EVENT_CLICK)) { listViewProxy.fireSyncEvent(TiC.EVENT_ITEM_CLICK, data); } } @@ -193,13 +193,13 @@ public Object handleEvent(String eventName, Object data) @Override public boolean fireEvent(String eventName, Object data, boolean bubbles) { - data = handleEvent(eventName, data); + data = handleEvent(eventName, data, true); return super.fireEvent(eventName, data, bubbles); } @Override public boolean fireSyncEvent(String eventName, Object data, boolean bubbles) { - data = handleEvent(eventName, data); + data = handleEvent(eventName, data, true); return super.fireSyncEvent(eventName, data, bubbles); } @@ -275,7 +275,7 @@ protected TiViewProxy generateViewFromTemplate(TiViewProxy parent, KrollDict tem public void call(Object data) { // Call callback defined in template. - callback.call(krollObject, new Object[] { handleEvent(eventName, data) }); + callback.call(krollObject, new Object[] { handleEvent(eventName, data, false) }); } }); krollObject.setHasListenersForEventType(eventName, true);