diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2014-03-18 11:02:58 +0100 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2014-03-18 11:07:12 +0100 |
| commit | 94ac0a3b89cace6a0a6b8a45ee41f573c2089491 (patch) | |
| tree | 8453a3d54dea4f937f450595096d9d284ee10e58 /main | |
| parent | b4dbd8847573cf77fd6932ffd1e7abe801fcb15e (diff) | |
| download | cgeo-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')
| -rw-r--r-- | main/src/cgeo/geocaching/CacheListActivity.java | 1 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/ui/CacheListAdapter.java | 43 |
2 files changed, 16 insertions, 28 deletions
diff --git a/main/src/cgeo/geocaching/CacheListActivity.java b/main/src/cgeo/geocaching/CacheListActivity.java index 973f3e5..055bb5e 100644 --- a/main/src/cgeo/geocaching/CacheListActivity.java +++ b/main/src/cgeo/geocaching/CacheListActivity.java @@ -899,7 +899,6 @@ public class CacheListActivity extends AbstractListActivity implements FilteredA setListAdapter(adapter); adapter.forceSort(); registerForContextMenu(list); - list.setLongClickable(true); listFooter = getLayoutInflater().inflate(R.layout.cacheslist_footer, null); listFooter.setClickable(true); 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 |
