DroidKaigi / conference-app-2019

The Official Conference App for DroidKaigi 2019 Tokyo
https://droidkaigi.jp/2019/en/
Apache License 2.0
815 stars 267 forks source link

Toggle session favorite by long tap in TabularFormSessionPageFragment for TabularSpeechSessionItem and TabularServiceSessionItem #781

Closed takahirom closed 5 years ago

takahirom commented 5 years ago

Kind (Required)

sobaya-0141 commented 5 years ago

やり方が悪い可能性がありますが、 対応しようとすると、#785 #777 と同じエラーメッセージのクラッシュが起きる気がします。 ※#777 の方は特に自信無いです。。。(無関係かもしれません)

TabularSpeachSessionItemはSpeachSessionItemのお気に入り部分をほぼ移植 TabularServiceSessionItemはServiceSessionItemのお気に入り部分をほぼ移植 で試しています。

OverviewにあるSessionContentsActionCreatorをInjectはしていないので、 アプローチの方法がそもそも違うかもしれません。。。

takahirom commented 5 years ago

いやアプローチ的にはあっていそうです 👀 スクロールしなくても #785 は長押しでも起こる感じになりますか? それともRecyclerViewでnotifyDataSetChangedが走るとクラッシュするんですかね?

sobaya-0141 commented 5 years ago

仕事の合間だったので、すぐ諦めてしまったので記憶があいまいですが、 長押しで発生した気がします。

時間が作れれば再度試してみます!!

sobaya-0141 commented 5 years ago

自宅環境で同じコードで試してみましたが、 長押しで発生します。(画面の描画は終わっており、スクロールさせずに発生しました。) が、logcatでerrorを吐いてくれず、別の問題かもしれないです。。。 ※もうちょっと調べてみます。

sobaya-0141 commented 5 years ago

検証端末を変えたらlogcatも表示され、同一のエラーでした。 ですので、長押しで #785 が発生します。

takahirom commented 5 years ago

多分原因としてはfavoriteが切り替わるとまたsessionをすべて流すので、そのタイミングで、更新がかかって起こるのではないかと思っています

sobaya-0141 commented 5 years ago

私の知識不足で申し訳ないのですが、 GroupieではAdapter#updateとすることでnotifyすると認識しています。 TabularFormSessionPageFragmentにてAdapter#updateしているのが、 日付変更部分のみしか見当たらず自分の力では原因の特定までできませんでした。。。 https://github.com/DroidKaigi/conference-app-2019/blob/c7daf6e8eab7f4db5de70c718b655f6cf68e3eab/feature/session/src/main/java/io/github/droidkaigi/confsched2019/session/ui/TabularFormSessionPageFragment.kt#L138

無駄にお手数をおかけしてしまい、本当に申し訳ありません :bowing_man: