ListView如何清除选择

时间:2015-07-14 17:36:48

标签: android listview android-listview textview selector

所以我在列表视图上有一个选择器,其中每行有2 text views,每个文本视图都有另一个同步选择器(相同状态的不同drawable:activated和{{1} })与列表中的那个。我的逻辑是当我在列表视图中检测到某个项目时,我会暂时更改该视图的背景颜色,并在500ms后将其设置回透明状态。

但是,当它有时重置时,子视图的按下状态设置为true,有时两种方式视图都没有正确的bg,但内部pressed总是对应于text views,即使按下国家是错误的。

我似乎无法弄清楚如何纠正这种行为。非常感谢任何帮助,这件事让我疯狂。

我已经尝试清除没有帮助的选择,我甚至试图明确强制子视图为其激活状态设置为false,并且按下也不做goo的状态。我真的用完了这个选项。

1 个答案:

答案 0 :(得分:0)

因此,在花了很多时间分析AbsListView幕后发生的事情之后,我找到了解决这个问题的方法。首先是关于引起这个问题的问题,AbsListView有8个运动检测状态,即 -

  1. TOUCH_MODE_REST(-1)
  2. TOUCH_MODE_DOWN(0)
  3. TOUCH_MODE_TAP(1)
  4. TOUCH_MODE_DONE_WAITING(2)
  5. TOUCH_MODE_SCROLL(3)
  6. TOUCH_MODE_FLING(4)
  7. TOUCH_MODE_OVERSCROLL(5)
  8. TOUCH_MODE_OVERFLING(6)
  9. ACTION_UP事件被调度到列表视图时,touchMode被卡在(2)和(5)之间,导致它记住{{1}上的按下状态这导致了不正确的结果,即即使在动作完成时,按下的状态也是可见的。

    由于我始终从motionView(Child view)TouchListener发送活动,我无法清楚地知道为什么会出现这个问题。

    无论如何现在为这种情况下的工作 -

    当我的ListView识别出一个手势时,它会返回true,所以我只需要GestureDetector返回true,只需将GestureDetector的操作更改为MotionEvent并将其发送到ACTION_CANCEL并解决问题。