Skip to content

Commit 8e89db0

Browse files
committed
Handle the itemClick and the itemLongClick only when the SwipeLayout is the root of AdapterView's item,
1 parent 742494d commit 8e89db0

File tree

1 file changed

+28
-37
lines changed

1 file changed

+28
-37
lines changed

library/src/main/java/com/daimajia/swipe/SwipeLayout.java

Lines changed: 28 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -928,58 +928,49 @@ private boolean insideAdapterView() {
928928

929929
private AdapterView getAdapterView() {
930930
ViewParent t = getParent();
931-
while (t != null) {
932-
if (t instanceof AdapterView) {
933-
return (AdapterView) t;
934-
}
935-
t = t.getParent();
931+
if (t instanceof AdapterView) {
932+
return (AdapterView) t;
936933
}
937934
return null;
938935
}
939936

940937
private void performAdapterViewItemClick() {
941938
if(getOpenStatus()!= Status.Close) return;
942939
ViewParent t = getParent();
943-
while (t != null) {
944-
if (t instanceof AdapterView) {
945-
AdapterView view = (AdapterView) t;
946-
int p = view.getPositionForView(SwipeLayout.this);
947-
if (p != AdapterView.INVALID_POSITION
948-
&& view.performItemClick(view.getChildAt(p - view.getFirstVisiblePosition()), p, view
949-
.getAdapter().getItemId(p))) return;
940+
if (t instanceof AdapterView) {
941+
AdapterView view = (AdapterView) t;
942+
int p = view.getPositionForView(SwipeLayout.this);
943+
if (p != AdapterView.INVALID_POSITION){
944+
view.performItemClick(view.getChildAt(p - view.getFirstVisiblePosition()), p, view
945+
.getAdapter().getItemId(p));
950946
}
951-
t = t.getParent();
952947
}
953948
}
954949
private boolean performAdapterViewItemLongClick() {
955950
if(getOpenStatus()!= Status.Close) return false;
956951
ViewParent t = getParent();
957-
while (t != null) {
958-
if (t instanceof AdapterView) {
959-
960-
AdapterView view = (AdapterView) t;
961-
int p = view.getPositionForView(SwipeLayout.this);
962-
if (p == AdapterView.INVALID_POSITION) return false;
963-
long vId = view.getItemIdAtPosition(p);
964-
boolean handled = false;
965-
try {
966-
Method m = AbsListView.class.getDeclaredMethod("performLongPress", View.class, int.class, long.class);
967-
m.setAccessible(true);
968-
handled = (boolean) m.invoke(view, SwipeLayout.this, p, vId);
969-
970-
} catch (Exception e) {
971-
e.printStackTrace();
972-
973-
if (view.getOnItemLongClickListener() != null) {
974-
handled = view.getOnItemLongClickListener().onItemLongClick(view, SwipeLayout.this, p, vId);
975-
}
976-
if (handled) {
977-
view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
978-
}
952+
if (t instanceof AdapterView) {
953+
AdapterView view = (AdapterView) t;
954+
int p = view.getPositionForView(SwipeLayout.this);
955+
if (p == AdapterView.INVALID_POSITION) return false;
956+
long vId = view.getItemIdAtPosition(p);
957+
boolean handled = false;
958+
try {
959+
Method m = AbsListView.class.getDeclaredMethod("performLongPress", View.class, int.class, long.class);
960+
m.setAccessible(true);
961+
handled = (boolean) m.invoke(view, SwipeLayout.this, p, vId);
962+
963+
} catch (Exception e) {
964+
e.printStackTrace();
965+
966+
if (view.getOnItemLongClickListener() != null) {
967+
handled = view.getOnItemLongClickListener().onItemLongClick(view, SwipeLayout.this, p, vId);
968+
}
969+
if (handled) {
970+
view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
979971
}
980-
return handled;
981972
}
982-
t = t.getParent();
973+
return handled;
983974
}
984975
return false;
985976
}

0 commit comments

Comments
 (0)