回答編集履歴
3
後半が意味不明だったので書き直した
test
CHANGED
@@ -94,13 +94,13 @@
|
|
94
94
|
|
95
95
|
出力中にある数字はWidget(Row)のuid(固有のID)です。
|
96
96
|
|
97
|
-
一つ分か
|
97
|
+
一つ分かったのは新しいRowが追加されるたびに、それまでにあったRowの順番が反転してることです。例えば#Aでは 395,377 の順なのが #Bでは新しく追加された413の後に 377,395 の順に(つまり逆順に)並んでいます。#Bから#Cにかけても同じです。
|
98
98
|
|
99
99
|
二つ目は各Rowに割り当てられているvalueが固定されてないことで、#Bでは377に'AB'が割り当てられているのに#Cでは'ABC'が割り当てられています。
|
100
100
|
|
101
101
|
|
102
102
|
|
103
|
-
|
103
|
+
内部でのRowの順番の変化とRowに割り当てるvalueの変化がToggleButtonのOn-Offが切り替わった様に見える原因だと思います。
|
104
104
|
|
105
105
|
|
106
106
|
|
@@ -110,8 +110,8 @@
|
|
110
110
|
|
111
111
|
これも出力をみるとスクロール中に激しくadd_widget()とremove_widget()が呼び出されてました。
|
112
112
|
|
113
|
-
ここからは個人的な予想で検証はしていないんですが、
|
113
|
+
ここからは個人的な予想で検証はしていないんですが、RecycleViewは巨大な量のデータを扱えることをうりにしているので、その為の処理負荷対策なんじゃないかと思います。例えばスクロールによって'X'というvalueを表示する必要が無くなり、代わりに'Y'というvalueを表示する必要が生じた時、RecycleViewは’X'の表示に使っていたRowを’Y'の表示に使い回してRowのインスタンスの数を節約しているんじゃないかと。
|
114
114
|
|
115
115
|
|
116
116
|
|
117
|
-
|
117
|
+
スクロールの部分はともかくinsertによってvalueの割り当て直しが起きているのは事実なので、valueとそれに対応するRowは固定されない前提で扱わないといけないと言えると思います。
|
2
誤字の修正
test
CHANGED
@@ -96,11 +96,11 @@
|
|
96
96
|
|
97
97
|
一つ分かるのは新しいRowが追加されるたびに、それまでにあったRowの順番が反転してることです。具体的には#Aでは 395,377 の順なのが #Bでは新しく追加された413の後に377,395の順に(つまり逆順に)並んでいます。#Bから#Cにかけても同じです。
|
98
98
|
|
99
|
-
二つ目は各Rowに割り当てられているvalueが固定されてないことで、#
|
99
|
+
二つ目は各Rowに割り当てられているvalueが固定されてないことで、#Bでは377に'AB'が割り当てられているのに#Cでは'ABC'が割り当てられています。
|
100
100
|
|
101
101
|
|
102
102
|
|
103
|
-
つまり内部で順番
|
103
|
+
つまり内部ではRowの順番は変わっているし、Rowに割り当てるvalueも変わっているのでToggleButtonは使えないかと。
|
104
104
|
|
105
105
|
|
106
106
|
|
1
文法の修正
test
CHANGED
@@ -110,8 +110,8 @@
|
|
110
110
|
|
111
111
|
これも出力をみるとスクロール中に激しくadd_widget()とremove_widget()が呼び出されてました。
|
112
112
|
|
113
|
-
ここからは個人的な予想ですが、recycleviewは巨大な量のデータを扱えることをうりにしているので、その為の処理負荷対策なんじゃないかと思います。recycleviewは実際にはitemの数だけRowを持ってはおらず、スクロールによって表示する必要があった時にそこでRowにvalueを割り当てて表示させているということです。
|
113
|
+
ここからは個人的な予想で検証はしていないんですが、recycleviewは巨大な量のデータを扱えることをうりにしているので、その為の処理負荷対策なんじゃないかと思います。recycleviewは実際にはitemの数だけRowを持ってはおらず、スクロールによって表示する必要があった時にそこでRowにvalueを割り当てて表示させているということです。
|
114
114
|
|
115
115
|
|
116
116
|
|
117
|
-
|
117
|
+
なのでvalueとそれに対応するRowが一対一で存在している事を期待するのはまずい気がします。上に書いたようにRowに割り当てられるvalueが常に変化しているばかりか、そのvalueを表示する必要が無い時はそもそも対応するRowが存在しないかもしれないので。
|