Skip to content

Instantly share code, notes, and snippets.

@anagri
Created September 19, 2014 04:18
Show Gist options
  • Save anagri/48c7bc6efb36e9eb40cc to your computer and use it in GitHub Desktop.
Save anagri/48c7bc6efb36e9eb40cc to your computer and use it in GitHub Desktop.
Android Continuous Long Click Listener
package me.creativei.listener;
import android.os.Handler;
import android.os.Message;
import android.view.HapticFeedbackConstants;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
public class ContinuousLongClickListener implements View.OnTouchListener, View.OnLongClickListener {
public static final int WHAT = 264776257;
private final View.OnLongClickListener onLongClickListener;
private final Handler handler;
private int delay;
public ContinuousLongClickListener(View view, View.OnLongClickListener onLongClickListener) {
this.onLongClickListener = onLongClickListener;
delay = 750;
handler = new Handler();
view.setOnLongClickListener(this);
view.setOnTouchListener(this);
}
@Override
public boolean onLongClick(final View view) {
handler.post(new Runnable() {
@Override
public void run() {
view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
onLongClickListener.onLongClick(view);
Message message = Message.obtain(handler, this);
message.what = WHAT;
handler.sendMessageDelayed(message, delay);
}
});
return true;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
handler.removeMessages(WHAT);
}
return false;
}
}
@jianglijs
Copy link

you are so smart

@amitabha2715
Copy link

its fine... but not working within ListView/Recycler View.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment