[android] ListView上にCheckBoxを配置

久々のポストとなります。

andoroidの開発をやっていて、ドはまりしたのでこれを記録しておきたい。

[やりたいこと]
  • リスト上でそれぞれの行にチェックボックスを配置して、そのチェック状態によってほかの行のチェックなども同期させて更新したい
リストの表示などはこちら
[tappli blog]:[Android] 簡単なListViewのサンプル
を参考にさせていただいて、なんとなくできたのですが、

ListItem上にチェックボックスを配置した途端に
Activity#onItemClickが拾えなくなってしまうという状態になってしまいました。


--------------------------------------------------------------------------------
<- こんな感じでチェックボックス側にClickが取られちゃうう感じ? 行をクリックしても無反応(:_;)

--------------------------------------------------------------------------------

それでしょうがなく、adapter側のgetView()内で、無理やり(?)チェックボックスのリスナを登録して動かしてみたのですが、これが正しいのやらどうやら?

もうちょっとスマートなやり方があるのでは…

なおかつ、その場所(getView内のcheckbox#onClick)で他の行のitemを変更しても、全然更新しなくて、またはまる。。。

notifyDataSetChanged();
parent.invalidate();

で、何とかできたような気がするけど、これも正しいものかどうか?(微妙に更新時に画面がちらついたりする、俺のPCのスペックが低いからだろうか??)

--------------------------------------------------------------------------------
それで、麻雀点数計算アプリですが、
←こんな感じになりました。

手牌からだけでなく、和了役から選択できたほうが便利かな?
なんて思って作っています。

#まだ、TextViewのmarqueeとかがうまく動かなくて、悩んだりしてます。

コメント

  1. ListItem上にチェックボックスを配置した途端に
    Activity#onItemClickが拾えなくなってしまうのは
    checkboxに
    android:focusable="false"
    を入れれば良いみたいです。

    返信削除
  2. コメントに気づかなかった、ありがとうございます。
    なるほどなるほど、試してみます。

    返信削除

コメントを投稿

このブログの人気の投稿

CrossOver MAC のアンインストール

BloggerのDynamicViewテンプレートを適用