当按住ListView里面的一个Item时(就是一行),Item会有按下状态,如果这个时候松开,会响应Item点击事件;如果不松开接着滑动,Item按下的状态会被取消,滑动后松开也不会响应Item点击事件。这个效果是怎么实现的啊?我查看了AbsListView源码,MotionEvent.ACTION_MOVE 里面没有处理取消Item按下状态或点击事件啊。请前辈们指点下,着急

解决方案 »

  1.   

    加一个ontouch监听。从中启动手势监听。手势中有很多,你从中找到自己须要的作上flag。在执行事件的时候先判断flag就可以了。
      

  2.   

    我刚才用我的me525试了下,发现所有的listview都跟楼主说的一样啊,不需要干嘛啊。
      

  3.   


    我是想自己实现这个功能,不是靠ListView去实现哦。增加flag是可以过滤掉不要的事件,但是比较笨重,时间虽然能过滤掉,但是这个按下的状态怎么强制取消?
      

  4.   

    实现手势监听接口。里边有个onsingleup的方法。还有个ontouch的方法,在ontouch内处理action_down,up,move.....
      

  5.   

    楼主可以实现ListView的touch事件,监听MotionEvent.ACTION_CANCEL就可以了
      

  6.   

    哦,哈哈,这个其实比较简单你去看一下listview的源码吧。
      

  7.   

    监听是可以监听到的,关键是我要强制取消Item被选中的状态的啊。
      

  8.   

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_focused="true" android:drawable="@drawable/button_hover"/>
        <item android:state_pressed="true" android:drawable="@drawable/button_pressed"/>
        <item android:drawable="@drawable/button_normal"/>
    </selector>
    在getView()的時候可以設置背景
      

  9.   

    没看懂,关于ListView按下后拖动时就不再触发按下事件啊
      

  10.   


    对啊。ListView就有这个效果,我想问的是这个效果是怎么实现的。源码里我找了,AbsListView的MotionEvent.ACTION_MOVE没有做这个处理啊