Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Paging Library は便利だぞ!

Paging Library は便利だぞ!

#hakata_apk で発表した際のスライドです.
# Android

Hunachi

June 08, 2018
Tweet

More Decks by Hunachi

Other Decks in Programming

Transcript

  1. Paging Library͸ศརͩͧʂ
    # #
    #

    View Slide

  2. ࣗݾ঺հ
    ■ ;ͳͪʢHana Kondoʣ
    ■ ٱཹถߴઐ ੍ޚ৘ใ޻ֶՊ 4೥ʢΪϦΪϦ18ࡀʣ
    ■ AndroidΛ৮ΓॳΊͯ໿1.5೥͘Β͍ʁͷ·ͩ·ͩະख़ऀɽ
    ■ Kotlin͕޷͖ɽ
    ■ ॳΊͯͷ෦֎LTͰ͢ɽ
    ■ ·͔͞Γ଴ͬͯ·͢ʂ
    @Hunachi
    @_hunachi

    View Slide

  3. Paging Library ͱ͸?
    ■ RecyclerViewඞཁͳ෼͚ͩঃʑʹऔಘͯ͘͠ΕΔɽ
    Ø εΫϩʔϧ͍ͯͬͯ͠ऴ୺ʹۙͣ͘ͱଓ͖ͷItemΛऔಘͯ͘͠ΕΔɽ
    ■ ॳΊͯදʹݱΕͨͷ͸ڈ೥ͷ9݄ɽ
    ■ Android JetPackͷҰһʂ
    ■ ࠓ೥ͷ Google I/O Ͱ҆ఆ൛͕ϦϦʔε͞Εͨʂʢ͔ͩΒnew!ʣ

    View Slide

  4. View Slide

  5. ■ ແݶʹ௕͍ListΛऔಘ͍ͨ࣌͠΋ɼද͍ࣔͤͨ͞෼͚ͩ৘ใΛऔಘɽ
    Ø ແବͳ௨৴΍ϝϞϦΛ࢖Θͳ͍ɽ
    Ø εϜʔζʹߋ৽͞ΕΔͷͰɼUX͕޲্ɽ
    ■ PagingΛࣗ෼Ͱ࣮૷͠ͳ͍͍͔ͯ͘Βָʂ
    ■ Roomͱͷ૬ੑൈ܈ʂҰॹʹ࢖͏ͱΊͬͪΌָͰ͖Δʂ
    ■ Data
    OK
    Ø NetɼDataBaseɼFileɽɽɽ
    ࢖͏ར఺

    View Slide

  6. ࢖͍ํ
    ᶃ ListAdapter Λ࢖ͬͨ RecyclerView Λ࡞Δɽ
    ᶄ ListAdapter -> PagedListAdapterʹ͢Δɽ
    ᶅ DataSource ͱ DataSource.Factory Λ࡞Δɽ
    ᶆ BuilderΛ࡞Δɽ
    ᶇ ViewModelʹLiveDataΛ࡞Δɽ
    ᶈ submitListΛͯ͠׬੒ʂ
    Ͳ͏͍͏αΠΫϧͰಈ͔͘͸ɼCodelabͷWrap upʹॻ͍ͯ͋Δ
    ͷͰࠓճ͸࣮૷ํ๏ͷΈ঺հ͠·͢ɽ

    View Slide

  7. https://www.youtube.com/watch?v=QVMqCRs0BNA

    View Slide

  8. ListAdapter -> PagedListAdapterʹ͢Δɽ

    View Slide

  9. DataSourceͱDataSource.FactoryΛ࡞Δɽ
    σʔλݩ͕େ͖͘෼͚Δͱɼ3έʔε͋Δɽ
    1. DataBaseʢRoomͱซ༻ʣ
    2. DataBase + OtherSourceʢ ྫ: NetWork ʣ
    3. OtherSourceʢྫ: NetWork ʣ

    View Slide

  10. DataBaseRoom
    ■ List -> DataSource.Factory ʹ͢Δ͚ͩɽ

    View Slide

  11. DataBase + OtherSourceʢྫ: NetWork ʣ
    ■ DB͔ΒσʔλΛऔಘ͠ɼσʔλ͕଍Γͳ͘ͳͬͨΒBoundaryCallbackʹ௨஌ɽ
    ■ σʔλΛAPI౳͔Βऔ͖ͬͯͯɼDBΛߋ৽͢Δɽ
    ■ PagingͷCodeLab͕͜ͷܗɽ
    https://codelabs.developers.google.com/codelabs/android-paging/.

    View Slide

  12. ଓ͖
    ■ BoundaryCallback͸͜Μͳײ͡ɽ

    View Slide

  13. OtherSourceʢྫ: NetWork ʣ
    ■ DataSourceΛ͜Μͳײ͡Ͱ࡞Δɽʢσʔλݩ͕ϖʔδϯάʹରԠ͍ͯ͠Δʣ

    View Slide

  14. ଓ͖
    ■ DataͷऴΘΓ͸nullͰڭ͑ͯ͋͛Δɽ
    ■ ΤϥʔϋϯυϦϯάɼϦτϥΠॲཧ౳͸ɼ Executorͱ͔LiveDataΛ࢖ͬͯؤு
    ΔʂʢެࣜͷαϯϓϧΛΈΔͱ͍͍ͱࢥ͍·͢ʂʣ
    ■ σʔλݩ͕ϖʔδϯάʹରԠ͍ͯ͠Δ৔߹
    Ø PageKeyedDataSource Λ࢖͏ɽ
    Ø callbackͷҾ਺͕ ListͱݱࡏͷPageɽ
    ■ σʔλݩ͕ϖʔδϯάʹରԠ͍ͯ͠ͳ͍৔߹
    Ø ItemKeyedDataSource Λ࢖͏ɽ
    Ø callbackͷҾ਺͕ Item ͷΈɽ

    View Slide

  15. BuilderΛ࡞Δɽ

    View Slide

  16. ࠷ޙʹsubmitList͢Δɽ

    View Slide

  17. ■ )*Demo,/0
    ■ 5 1 #&-46
    !
    ■ "$
    ■ https://github.com/Hunachi/wantedly-coding-challenge-publicNetWork
    ■ https://github.com/Hunachi/HunaSchedule2 DataBase!%'(+2
    3-.

    View Slide

  18. ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɽ

    View Slide