刺身の上にたんぽぽ乗せる日記

プログラミングしたり、自販機の下に落ちてる小銭を集めたりしてます

touch downでfling停止

今回の変更について。

  • list viewでflingした際、デフォルトではtouch downで停止する
  • 中のTextViewのsetMovementMethodでMovementMethodを設定すると何故かtouch upで停止になる
  • TextViewに疑似touch upイベントをdispatchすることでflingを停止することはできる
  • ただし、その際にclickableなspanなどのonclickハンドラが叩かれることがある

で、何の工夫もない修正なんだけど、

  • ListAdapterがListViewのitemをinflateする際に、生成するTextViewを全て憶えておく
    • Viewは使い回してるから、レスが1000あっても実際は数個しか作られない。
  • onScrollStateChangedでflingされたらTextViewのsetMovementMethodでnullをセット。
  • fling終わったら元に戻す

終わり。比較的安全な変更ではあると思う。