#hakata_apk で発表した際のスライドです. # Android
Paging Libraryศརͩͧʂ# ##
View Slide
ࣗݾհ■ ;ͳͪʢHana Kondoʣ■ ٱཹถߴઐ ੍ޚใֶՊ 4ʢΪϦΪϦ18ࡀʣ■ AndroidΛ৮ΓॳΊͯ1.5͘Β͍ʁͷ·ͩ·ͩະख़ऀɽ■ Kotlin͕͖ɽ■ ॳΊͯͷ෦֎LTͰ͢ɽ■ ·͔͞Γͬͯ·͢ʂ@Hunachi@_hunachi
Paging Library ͱ?■ RecyclerViewඞཁͳ͚ͩঃʑʹऔಘͯ͘͠ΕΔɽØ εΫϩʔϧ͍ͯͬͯ͠ऴʹۙͣ͘ͱଓ͖ͷItemΛऔಘͯ͘͠ΕΔɽ■ ॳΊͯදʹݱΕͨͷڈͷ9݄ɽ■ Android JetPackͷҰһʂ■ ࠓͷ Google I/O Ͱ҆ఆ൛͕ϦϦʔε͞Εͨʂʢ͔ͩΒnew!ʣ
■ ແݶʹ͍ListΛऔಘ͍ͨ࣌͠ɼද͍͚ࣔͤͨͩ͞ใΛऔಘɽØ ແବͳ௨৴ϝϞϦΛΘͳ͍ɽØ εϜʔζʹߋ৽͞ΕΔͷͰɼUX্͕ɽ■ PagingΛࣗͰ࣮͠ͳ͍͍͔ͯ͘Βָʂ■ Roomͱͷ૬ੑൈ܈ʂҰॹʹ͏ͱΊͬͪΌָͰ͖Δʂ■ Data OKØ NetɼDataBaseɼFileɽɽɽ͏ར
͍ํᶃ ListAdapter Λͬͨ RecyclerView Λ࡞Δɽᶄ ListAdapter -> PagedListAdapterʹ͢Δɽᶅ DataSource ͱ DataSource.Factory Λ࡞Δɽᶆ BuilderΛ࡞Δɽᶇ ViewModelʹLiveDataΛ࡞Δɽᶈ submitListΛͯ͠ʂͲ͏͍͏αΠΫϧͰಈ͔͘ɼCodelabͷWrap upʹॻ͍ͯ͋ΔͷͰࠓճ࣮ํ๏ͷΈհ͠·͢ɽ
https://www.youtube.com/watch?v=QVMqCRs0BNA
ListAdapter -> PagedListAdapterʹ͢Δɽ
DataSourceͱDataSource.FactoryΛ࡞Δɽσʔλݩ͕େ͖͚͘Δͱɼ3έʔε͋Δɽ1. DataBaseʢRoomͱซ༻ʣ2. DataBase + OtherSourceʢ ྫ: NetWork ʣ3. OtherSourceʢྫ: NetWork ʣ
DataBaseRoom■ List -> DataSource.Factory ʹ͢Δ͚ͩɽ
DataBase + OtherSourceʢྫ: NetWork ʣ■ DB͔ΒσʔλΛऔಘ͠ɼσʔλ͕Γͳ͘ͳͬͨΒBoundaryCallbackʹ௨ɽ■ σʔλΛAPI͔Βऔ͖ͬͯͯɼDBΛߋ৽͢Δɽ■ PagingͷCodeLab͕͜ͷܗɽhttps://codelabs.developers.google.com/codelabs/android-paging/.
ଓ͖■ BoundaryCallback͜Μͳײ͡ɽ
OtherSourceʢྫ: NetWork ʣ■ DataSourceΛ͜Μͳײ͡Ͱ࡞Δɽʢσʔλݩ͕ϖʔδϯάʹରԠ͍ͯ͠Δʣ
ଓ͖■ DataͷऴΘΓnullͰڭ͑ͯ͋͛Δɽ■ ΤϥʔϋϯυϦϯάɼϦτϥΠॲཧɼ Executorͱ͔LiveDataΛͬͯؤுΔʂʢެࣜͷαϯϓϧΛΈΔͱ͍͍ͱࢥ͍·͢ʂʣ■ σʔλݩ͕ϖʔδϯάʹରԠ͍ͯ͠Δ߹Ø PageKeyedDataSource Λ͏ɽØ callbackͷҾ͕ ListͱݱࡏͷPageɽ■ σʔλݩ͕ϖʔδϯάʹରԠ͍ͯ͠ͳ͍߹Ø ItemKeyedDataSource Λ͏ɽØ callbackͷҾ͕ Item ͷΈɽ
BuilderΛ࡞Δɽ
࠷ޙʹsubmitList͢Δɽ
■ )*Demo,/0■ 5 1 #&-46!■ "$■ https://github.com/Hunachi/wantedly-coding-challenge-publicNetWork■ https://github.com/Hunachi/HunaSchedule2 DataBase!%'(+23-.
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɽ