Android ListView 在 Item 长按释放上运行一个事件

标签 android events android-listview touch listener

我在 ListView 中使用 OnItemClickListener 和 OnItemLongClickListener,现在我正在寻找一种方法来检测 OnItemLongClick 之后的释放操作,完成此操作的最佳方法是什么?

最佳答案

虽然我接受了@g00dy 的回答,但我发现这个解决方案更符合我的需求,并将我的代码保存在一个地方。

在我设置 listView 的 Activity 中,我正在这样做:

MyOnLongClickListener myListener = new MyOnLongClickListener(this);
listView.setOnItemLongClickListener(myListener);
listView.setOnTouchListener(myListener.getReleaseListener());

所有的魔法都发生在“MyOnLongClickListener”中:

public class MyOnLongClickListener implements AdapterView.OnItemLongClickListener {

    private View.OnTouchListener mReleaseListener = new OnReleaseListener();
    private boolean mEnabled = false;
    private Context mContext;

    public MyOnLongClickListener(Context context) {
        mContext = context;
    }

    @Override
    public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
        Toast.makeText(mContext, "OnLongClick", Toast.LENGTH_SHORT).show();
        mEnabled = true;
        return true;
    }

    /**
     * Returns a listener for the release event.
     * @return
     */
    public View.OnTouchListener getReleaseListener() {
        return mReleaseListener;
    }

    /**
     * Listener for the Release event.
     */
    private class OnReleaseListener implements View.OnTouchListener {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            if(motionEvent.getAction() == android.view.MotionEvent.ACTION_UP) {
                if(mEnabled) {
                    Toast.makeText(mContext, "Release", Toast.LENGTH_SHORT).show();
                    /* Execute... */
                    mEnabled = false;
                    return true;
                }
            }
            return false;
        }
    }

}

关于Android ListView 在 Item 长按释放上运行一个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18145172/

相关文章:

javascript - 通过 onKeyPress 或 onKeyDown 在 React 中仅允许数字

events - jQuery — 页面上的每个元素仅触发一次实时事件?

android - 更快加载ListView,比Viewholder方法更快

android - ListView 项目 : change background color to last item selected (or clicked)

android - 如何从 Android 应用程序使用 HTTPS rest 服务

android - 如何在 Android 的 ListView 中延迟加载图像

android - Android中通过MySql迭代ListView

android - 蜂窝 Activity 自发地重新启动

ios - 如何跟踪值何时更改以及拖动何时停止?

android - 如何使用自定义适配器设置 ListView ?自定义适配器如何在下面给出的代码中工作?