回答編集履歴

3

後半が意味不明だったので書き直した

2017/11/18 03:39

投稿

gottadiveintopy
gottadiveintopy

スコア736

test CHANGED
@@ -94,13 +94,13 @@
94
94
 
95
95
  出力中にある数字はWidget(Row)のuid(固有のID)です。
96
96
 
97
- 一つ分かのは新しいRowが追加されるたびに、それまでにあったRowの順番が反転してることです。具体的には#Aでは 395,377 の順なのが #Bでは新しく追加された413の後に377,395の順に(つまり逆順に)並んでいます。#Bから#Cにかけても同じです。
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
- つまり内部でRowの順番わっているし、Rowに割り当てるvalueわっているのでToggleButtonは使かと
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
- ここからは個人的な予想で検証はしていないんですが、recycleviewは巨大な量のデータを扱えることをうりにしているので、その為の処理負荷対策なんじゃないかと思います。recycleviewは実際にはitemの数だけRowを持ってはおらず、スクロールによって表示する必要があった時そこでRowにvalueを割り当表示させているうこです
113
+ ここからは個人的な予想で検証はしていないんですが、RecycleViewは巨大な量のデータを扱えることをうりにしているので、その為の処理負荷対策なんじゃないかと思います。例えばスクロールによって'X'というvalueを表示する必要が無くなり、代わり'Y'というvalueを表示する必要が生じた時、RecycleViewは’X'の表示に使っいたRowを’Y'の表示に使い回しRowのインスタンスの数を節約しているんじゃなと。
114
114
 
115
115
 
116
116
 
117
- valueとそれに対応するRowが一対一で存在している事を期待するはまずい気がします。上に書いたようにRowに割り当てられるvalue常に変化しているばかりかそのvalueを表示する必要が無い時はもそも対応するRowが存在しないかもしれないので
117
+ スクロール部分はともかくinsertによってvalueの割り当て直し起きているのは事実なので、valueれに対応するRowは固定されない前提で扱わないといけないと言えると思います

2

誤字の修正

2017/11/18 03:39

投稿

gottadiveintopy
gottadiveintopy

スコア736

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が固定されてないことで、#Aでは377に'A'が割り当てられているのに#Bでは'AB'が割り当てられています。
99
+ 二つ目は各Rowに割り当てられているvalueが固定されてないことで、#Bでは377に'AB'が割り当てられているのに#Cでは'ABC'が割り当てられています。
100
100
 
101
101
 
102
102
 
103
- つまり内部で順番変わっているRowに対して、割り当てるvalueも変えることで見かけ上のvalueの並びが変らないようにしているっていうことだと思います。それが今回ToggleButton使ったことで内部のRowの並びの変化がそのまま見てしまったのだと。
103
+ つまり内部ではRowの順番変わっているし、Rowに割り当てるvalueも変わているのでToggleButton使えないかと。
104
104
 
105
105
 
106
106
 

1

文法の修正

2017/11/15 13:42

投稿

gottadiveintopy
gottadiveintopy

スコア736

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
- まとめるとvalueとそれに対応するRowが一対一で存在している事を期待するのはまずそうです。上に書いたようにRowに割り当てられるvalueが常に変化しているばかりか、そのvalueを表示する必要が無い時はそもそも対応するRowが存在しないかもしれないので。
117
+ なのでvalueとそれに対応するRowが一対一で存在している事を期待するのはまずい気がします。上に書いたようにRowに割り当てられるvalueが常に変化しているばかりか、そのvalueを表示する必要が無い時はそもそも対応するRowが存在しないかもしれないので。