[解決済み]DatabindingとRecycleViewの使用時にインタフェースが点滅し、プロジェクトステータスの更新が混乱する
問題の説明
プロジェクトでは
の順で、明らかに7は5の前に現れるべきではありません.
デバッグでは、更新項目が上部にある場合は表示されず、更新項目が画面の下(最後の数桁)にある場合は表示され、逆順に切り替えた場合(6から5に切り替え、5のステータスを選択した場合)でも点滅します.
印刷ログは、
切り替えの過程でデータ自体の順序が変化していないと他の手段で決定された場合、データをバインドする際に問題が発生するしかない.
クエリの例の解決方法は次のとおりです.
ソリューション
げんり
これにより、次のフレームのリフレッシュに遅れるのではなく、バインド操作がすぐに実行されます.RecyclerViewは、onBindViewHolderの直後にViewを測定します.このexecutePendingBindings()メソッドは、バインドが次のフレームの描画に遅れて誤ったデータがViewにバインドされた場合、Viewが正しく測定されないため、非常に重要です.https://juejin.im/entry/587d7361b123db4d5e7d7522
参考記事
https://blog.csdn.net/io_field/article/details/80175954 https://stackoverflow.com/questions/53043412/android-why-use-executependingbindings-in-recyclerview https://juejin.im/entry/587d7361b123db4d5e7d7522
プロジェクトでは
RecyclerView
+Databinding
を使用し、使用中にあるitem状態を更新すると、画面が1~2回点滅してから正常に表示されることが多い.録画後にスロープレイしてみると、項目の順序が狂っていることがわかります.元の順序が1~9であると仮定すると、指定item 6
を更新すると、類似の7
5
6
の順で、明らかに7は5の前に現れるべきではありません.
デバッグでは、更新項目が上部にある場合は表示されず、更新項目が画面の下(最後の数桁)にある場合は表示され、逆順に切り替えた場合(6から5に切り替え、5のステータスを選択した場合)でも点滅します.
印刷ログは、
onCreateViewHolder
呼び出し時には表示されず、onBindViewHolder
時に表示されることを示します.切り替えの過程でデータ自体の順序が変化していないと他の手段で決定された場合、データをバインドする際に問題が発生するしかない.
クエリの例の解決方法は次のとおりです.
ソリューション
viewHolder
とdataBinding
の論理実行が完了した後、次のコードを実行します.dataBinding.executePendingBindings()
げんり
これにより、次のフレームのリフレッシュに遅れるのではなく、バインド操作がすぐに実行されます.RecyclerViewは、onBindViewHolderの直後にViewを測定します.このexecutePendingBindings()メソッドは、バインドが次のフレームの描画に遅れて誤ったデータがViewにバインドされた場合、Viewが正しく測定されないため、非常に重要です.https://juejin.im/entry/587d7361b123db4d5e7d7522
executePendingBindings
は、遅延バインディングを直ちに実行します. /**
* Evaluates the pending bindings, updating any Views that have expressions bound to
* modified variables. This must be run on the UI thread.
*/
public void executePendingBindings() {
if (mContainingBinding == null) {
executeBindingsInternal();
} else {
mContainingBinding.executePendingBindings();
}
}
参考記事
https://blog.csdn.net/io_field/article/details/80175954 https://stackoverflow.com/questions/53043412/android-why-use-executependingbindings-in-recyclerview https://juejin.im/entry/587d7361b123db4d5e7d7522