2013年5月21日火曜日

AndroidでListViewのOnItemClickListenerが反応しない

久しぶりの更新です。

最近ちょいちょいとAndroidの方の開発もしています。
その中で、3日ほど詰まってしまったので備忘録を残しておきます。

内容としては、ListViewの各行を押したときに反応しないというものです。
ListViewでは上記の様な問題は結構発生するようで、様々な原因が考えられ、
そのおかげで解決まで時間がかかってしまいました。

で、自分の原因は、カスタムアダプタークラスの継承したisEnableメソッドで、falseを返しているという、とても単純なものでした。
他のクラスで選択されては困るとfalseにしていたものを、
すっかり失念したままコピペしていました。


折角なので、詰まっている間に調べた他の原因を残しておきます。

【ListView内のアイテムに、onClickLisnerが反応する物が含まれる】
多くはコレになります。
そちらにonClickイベントが渡されてしまい、onItemClickが反応しなくなるようです。
解決法は、それぞれのアイテムに
  android:focusableInTouchMode=”false” android:focusable=”false”を設定

【アイテムの中にTextViewが含まれる】
 android:inputType=”textMultiLine”があると反応しません。
 android:minLines/android:maxLinesを使用すると回避できます。
 android:autoLinkもテキストの内容によっては反応しなくなります。

【ランダムに発生】
 原因は不明ですが、ListViewにadaptorをセットする前にonItemClickListnerを設定すると回避できる場合があるようです。

参考:
http://xjaphx.wordpress.com/2011/07/14/listview-doesnt-respond-to-onitemclicklistener/

0 件のコメント:

コメントを投稿