0

是否可以在 ListView 中知道某个项目是否被按下/触摸(但未单击)并知道哪个?

我尝试使用“OnTouchListener”但没有成功(我可以在 ListView 上拦截 UP 和 Down 事件,但不能在元素上拦截)。

我也尝试了“OnItemLongClickListener”,但是当我想要立即获得信息时,我必须等待。

你有想法吗 ?

先感谢您。


编辑(解决方案):

我将以下代码放在项目视图的适配器中。

view.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {

        if (event.getAction() == MotionEvent.ACTION_DOWN) {                
            image.setImageResource(R.drawable.image2);
        }
        else if (event.getAction() == MotionEvent.ACTION_UP) {               
            image.setImageResource(R.drawable.image1);
        }

        return true;
    }
});

现在,当我触摸一个项目时,图片变为“image2”,当我不触摸屏幕时,它返回到“image1”。

但是有一个问题,如果我按下一个项目(image2 显示良好)并且我在列表视图中移动手指并且我不触摸屏幕,它会为 image2 保持打开状态,“MotionEvent.ACTION_UP”无法执行。一旦我不触摸屏幕,您是否知道如何做到这一点,它必须返回到 image1 上?

谢谢您的帮助。

4

2 回答 2

1

您可以在适配器创建时将 SetOnTouchListener 设置为项目视图。

于 2016-04-13T07:43:56.667 回答
0

您只需尝试实现侦听器,然后您可以覆盖该功能或请添加您的粗略工作部分

于 2016-04-13T09:41:04.600 回答