Android WearableListView LongClick

Android WearableListView LongClick,android,wear-os,Android,Wear Os,我一直在尝试向WearableListView添加一个longClickListener 这就是我目前所做的: listView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { Toast.makeText(getActivity(), "Long", Toast.LENGTH_

我一直在尝试向WearableListView添加一个longClickListener

这就是我目前所做的:

listView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View view) {
            Toast.makeText(getActivity(), "Long", Toast.LENGTH_SHORT).show();
            return false;
        }
    });
这里的listView是一个可穿戴的listView。当我长时间单击时,函数不会被调用。 我知道,对于单次单击,我们必须设置
listView.setClickListener()
,而不是
listView.setOnClickListener()
是否有类似的长时间单击方法


谢谢

尝试使用长点击而不是长点击

listView.setOnItemLongClickListener(new OnItemLongClickListener() {

        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                int pos, long id) {
            // TODO Auto-generated method stub

            Log.v("long clicked","pos: " + pos);

            return true;
        }
    }); 
listView.setOnItemLongClickListener(新的OnItemLongClickListener(){
长单击(AdapterView arg0、视图arg1、,
内部位置,长id){
//TODO自动生成的方法存根
Log.v(“长时间点击”,“pos:+pos”);
返回true;
}
}); 

尝试使用长点击而不是长点击

listView.setOnItemLongClickListener(new OnItemLongClickListener() {

        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                int pos, long id) {
            // TODO Auto-generated method stub

            Log.v("long clicked","pos: " + pos);

            return true;
        }
    }); 
listView.setOnItemLongClickListener(新的OnItemLongClickListener(){
长单击(AdapterView arg0、视图arg1、,
内部位置,长id){
//TODO自动生成的方法存根
Log.v(“长时间点击”,“pos:+pos”);
返回true;
}
}); 

刚刚遇到这个问题。我的黑客解决方案是扩展wearableListView并覆盖其onTouch方法,以查看是否有长时间的接触。还要确保触摸发生在中心项目上。我必须在项目视图中添加一个居中的布尔值

  @Override
public boolean onTouchEvent(MotionEvent event) {

    if(!this.isEnabled()) {
        return false;
    } else {
        switch (event.getActionMasked()) {
            case MotionEvent.ACTION_DOWN:
                moved = false;
                timestamp = System.currentTimeMillis();
                initialTouch = event.getRawX();
                //handler.postDelayed(mLongPressed, 1000);
                break;
            case MotionEvent.ACTION_UP:
                //handler.removeCallbacks(mLongPressed);
                if (!moved && timestamp + 1000 < System.currentTimeMillis()) {

                    Rect rect;
                    for(int i = 0;i<getChildCount();i++){View v = getChildAt(i);
                        if(v instanceof WearableListItemSensor){
                            if(((WearableListItemSensor) v).isCenter) {
                                rect = new Rect(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
                                if(rect.contains( (int) event.getX(), (int) event.getY())){
                                    //long pressed center
                                    if (mLongClickListener != null)
                                        mLongClickListener.onLongClick((int)v.getTag());
                                }
                                return true;
                            }
                        }
                    }
                }
                break;
            case MotionEvent.ACTION_MOVE:
                //handler.removeCallbacks(mLongPressed);
                if(Math.abs(event.getRawX() - initialTouch) >= 2)
                    moved=true;
                break;
        }

        return super.onTouchEvent(event);
@覆盖
公共布尔onTouchEvent(运动事件){
如果(!this.isEnabled()){
返回false;
}否则{
开关(event.getActionMasked()){
case MotionEvent.ACTION\u DOWN:
移动=假;
timestamp=System.currentTimeMillis();
initialTouch=event.getRawX();
//处理器。后延迟(长按,1000);
打破
case MotionEvent.ACTION\u UP:
//handler.removeCallbacks(长按);
如果(!moved&×tamp+1000
刚刚遇到这个问题。我的黑客解决方案是扩展wearableListView并覆盖其onTouch方法,以查看是否进行了长时间触摸。还要确保触摸发生在中心项目上。我必须在项目视图中添加一个居中布尔值

  @Override
public boolean onTouchEvent(MotionEvent event) {

    if(!this.isEnabled()) {
        return false;
    } else {
        switch (event.getActionMasked()) {
            case MotionEvent.ACTION_DOWN:
                moved = false;
                timestamp = System.currentTimeMillis();
                initialTouch = event.getRawX();
                //handler.postDelayed(mLongPressed, 1000);
                break;
            case MotionEvent.ACTION_UP:
                //handler.removeCallbacks(mLongPressed);
                if (!moved && timestamp + 1000 < System.currentTimeMillis()) {

                    Rect rect;
                    for(int i = 0;i<getChildCount();i++){View v = getChildAt(i);
                        if(v instanceof WearableListItemSensor){
                            if(((WearableListItemSensor) v).isCenter) {
                                rect = new Rect(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
                                if(rect.contains( (int) event.getX(), (int) event.getY())){
                                    //long pressed center
                                    if (mLongClickListener != null)
                                        mLongClickListener.onLongClick((int)v.getTag());
                                }
                                return true;
                            }
                        }
                    }
                }
                break;
            case MotionEvent.ACTION_MOVE:
                //handler.removeCallbacks(mLongPressed);
                if(Math.abs(event.getRawX() - initialTouch) >= 2)
                    moved=true;
                break;
        }

        return super.onTouchEvent(event);
@覆盖
公共布尔onTouchEvent(运动事件){
如果(!this.isEnabled()){
返回false;
}否则{
开关(event.getActionMasked()){
case MotionEvent.ACTION\u DOWN:
移动=假;
timestamp=System.currentTimeMillis();
initialTouch=event.getRawX();
//处理器。后延迟(长按,1000);
打破
case MotionEvent.ACTION\u UP:
//handler.removeCallbacks(长按);
如果(!moved&×tamp+1000
Hi!遗憾的是,似乎没有
setonimlongclicklistener()
在WearableListView中。选中了引用也可以。参考中,对于可穿戴列表视图,没有长单击。您可以在列表项的主布局上应用长单击。列表是一个片段,因此尝试将长单击放在该列表上,但也不起作用。此外,我需要检索用户长时间单击但不起作用的项目by这个方法。嗨!遗憾的是,似乎没有
setOnItemLongClickListener()
在WearableListView中。选中了引用也可以。参考中,对于可穿戴列表视图,没有长单击。您可以在列表项的主布局上应用长单击。列表是一个片段,因此尝试将长单击放在该列表上,但也不起作用。此外,我需要检索用户长时间单击但不起作用的项目b我喜欢这种方法。