aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/ui
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2014-03-18 11:02:58 +0100
committerSamuel Tardieu <sam@rfc1149.net>2014-03-18 11:07:12 +0100
commit94ac0a3b89cace6a0a6b8a45ee41f573c2089491 (patch)
tree8453a3d54dea4f937f450595096d9d284ee10e58 /main/src/cgeo/geocaching/ui
parentb4dbd8847573cf77fd6932ffd1e7abe801fcb15e (diff)
downloadcgeo-94ac0a3b89cace6a0a6b8a45ee41f573c2089491.zip
cgeo-94ac0a3b89cace6a0a6b8a45ee41f573c2089491.tar.gz
cgeo-94ac0a3b89cace6a0a6b8a45ee41f573c2089491.tar.bz2
fix #3664: long press on list items doesn't work
The long click is now detected using the gesture detector.
Diffstat (limited to 'main/src/cgeo/geocaching/ui')
-rw-r--r--main/src/cgeo/geocaching/ui/CacheListAdapter.java43
1 files changed, 16 insertions, 27 deletions
diff --git a/main/src/cgeo/geocaching/ui/CacheListAdapter.java b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
index 828bd43..f30c0bd 100644
--- a/main/src/cgeo/geocaching/ui/CacheListAdapter.java
+++ b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
@@ -366,19 +366,11 @@ public class CacheListAdapter extends ArrayAdapter<Geocache> {
final boolean lightSkin = Settings.isLightSkin();
- final TouchListener touchLst = new TouchListener(cache);
- v.setOnClickListener(touchLst);
- v.setOnLongClickListener(touchLst);
- v.setOnTouchListener(touchLst);
- v.setLongClickable(true);
-
- if (selectMode) {
- holder.checkbox.setVisibility(View.VISIBLE);
- }
- else {
- holder.checkbox.setVisibility(View.GONE);
- }
+ final TouchListener touchListener = new TouchListener(cache, v);
+ v.setOnClickListener(touchListener);
+ v.setOnTouchListener(touchListener);
+ holder.checkbox.setVisibility(selectMode ? View.VISIBLE : View.GONE);
holder.checkbox.setChecked(cache.isStatusChecked());
holder.checkbox.setOnClickListener(new SelectionCheckBoxListener(cache));
@@ -532,15 +524,15 @@ public class CacheListAdapter extends ArrayAdapter<Geocache> {
}
}
- private class TouchListener implements View.OnLongClickListener, View.OnClickListener, View.OnTouchListener {
+ private class TouchListener implements View.OnClickListener, View.OnTouchListener {
private boolean touch = true;
private final GestureDetector gestureDetector;
private final Geocache cache;
- public TouchListener(final Geocache cache) {
+ public TouchListener(final Geocache cache, final View view) {
this.cache = cache;
- final FlingGesture dGesture = new FlingGesture(cache);
+ final FlingGesture dGesture = new FlingGesture(cache, view);
gestureDetector = new GestureDetector(getContext(), dGesture);
}
@@ -562,17 +554,6 @@ public class CacheListAdapter extends ArrayAdapter<Geocache> {
CacheDetailActivity.startActivity(getContext(), cache.getGeocode(), cache.getName());
}
- // long tap on item
- @Override
- public boolean onLongClick(View view) {
- if (!touch) {
- touch = true;
- return true;
- }
-
- return view.showContextMenu();
- }
-
// swipe on item
@Override
public boolean onTouch(View view, MotionEvent event) {
@@ -588,9 +569,17 @@ public class CacheListAdapter extends ArrayAdapter<Geocache> {
private class FlingGesture extends GestureDetector.SimpleOnGestureListener {
private final Geocache cache;
+ private final View view;
- public FlingGesture(Geocache cache) {
+ public FlingGesture(final Geocache cache, final View view) {
this.cache = cache;
+ this.view = view;
+ }
+
+ // long tap on item
+ @Override
+ public void onLongPress(MotionEvent e) {
+ view.showContextMenu();
}
@Override