diff options
| -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 |
