package Ġorg . mobile toolkit . android . repository . recyclerview Ċ Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġorg . mobile toolkit . android . repository . Async Repository Ċ import Ġorg . mobile toolkit . android . repository . Async Repository Listener Ċ import Ġorg . mobile toolkit . android . repository . Model Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠSeb astian ĠO w od z in Ġon Ġ 1 3 / 0 2 / 2 0 1 9 . Ċ Ġ*/ Ċ abstract Ġclass ĠAsync Listener RecyclerView Adapter < ViewHolder Ġ: ĠRecyclerView . ViewHolder , ĠIdentifier , ĠEntity Ġ: ĠModel < Identifier >>( ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠAsync Repository < Identifier , ĠEntity > Ċ ) Ġ: ĠAsync RecyclerView Adapter < ViewHolder , ĠIdentifier , ĠEntity >( repository ) Ġ{ ĊĊĠĠĠ Ġoverride Ġvar Ġdata : ĠList < Entity > Ġ= ĠlistOf () ĊĊĠĠĠ Ġprotected Ġopen Ġval Ġrepository Listener : ĠAsync Repository Listener < List < Entity >, ĠEntity > Ġ= Ġ{ Ġentities , Ġchange Set , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġdata Ġ= Ġentities Ġ?: ĠlistOf () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( change Set ?. isNotEmpty () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Set . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAsync Repository . Change . Type . Added Ġ-> Ġnotify Item Inserted ( it . new Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAsync Repository . Change . Type . Modified Ġ-> Ġnotify Item Changed ( it . new Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAsync Repository . Change . Type . Removed Ġ-> Ġnotify Item Removed ( it . new Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . reload Repository Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreload Repository Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . release Listener ( repository Listener ) ĊĠĠĠĠĠĠĠ Ġrepository . get ( repository Listener ) ĊĠĠĠ Ġ} Ċ }