【问题标题】:Android - Pressed / Touched item in a ListViewAndroid - ListView 中按下/触摸的项目
【发布时间】:2016-04-13 00:08:49
【问题描述】:

是否可以在 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,你知道该怎么做吗?

感谢您的帮助。

【问题讨论】:

    标签: android listview items pressed


    【解决方案1】:

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

    【讨论】:

    • 完美运行!这很简单....谢谢!但现在我还有一个问题,我将在上面编辑我的问题。
    【解决方案2】:

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

    【讨论】:

    • 感谢您的帮助!我在第一篇文章中提出了另一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多