回答編集履歴

2

表現修正

2019/08/28 16:56

投稿

jimbe
jimbe

スコア12543

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  件の場合, クリックしたことで背景色を直接更新していますが, これだけでは再表示した際には元に戻ってしまいます.
10
10
 
11
- ラジオボタンのような動作をさせるのでしたら, どの行がクリックされたのか(=背景色を変える行はどこか)を保持してお, getView で「その行だったら背景色を Red, 違うなら White(?) 」という処理を入れます.
11
+ ラジオボタンのような動作をさせるのでしたら, どの行が選択状態なのか(=背景色を変える行はどこか)を保持しておく必要は当然ありますし, それを元に getView で「その行だったら背景色を Red, 違うなら White(?) 」という処理を入れます.
12
12
 
13
13
  これで, 最後にクリックされた行の getView だけが背景色の違う View を返すことになりますので, その前にクリックされていた行は背景色が戻るようになります.
14
14
 

1

表現微修正

2019/08/28 16:56

投稿

jimbe
jimbe

スコア12543

test CHANGED
@@ -12,4 +12,4 @@
12
12
 
13
13
  これで, 最後にクリックされた行の getView だけが背景色の違う View を返すことになりますので, その前にクリックされていた行は背景色が戻るようになります.
14
14
 
15
- ですが, これだけではその「先にクリックされていた行」は再表示されません. そこで, 再表示が必要であることを示す「その行のデータが変更された」というメッセージ(notify~) を Adapter のメソッドで ListView に投げます. すると ListView がその行の getView を呼び, 返された(背景色が戻った) View を表示します.
15
+ ですが, これだけではその「先にクリックされていた行」は再表示されません. そこで, 再表示が必要であることを示す「その行のデータが変更された」というメッセージ(notify~) を Adapter のメソッドで ListView に投げます. すると ListView がその行の getView を呼び, 返された(背景色が戻った) View を表示してくれます.