/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 ĠZ hi hu ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . q ing me i 2 . rx image picker _ extension . ui . adapter Ċ Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . provider . Media Store Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ Ċ abstract Ġclass ĠRecyclerView Cursor Adapter < VH Ġ: ĠRecyclerView . ViewHolder > Ġinternal Ġconstructor ( c : ĠCursor ?) Ġ: ĠRecyclerView . Adapter < VH >() Ġ{ ĊĊĠĠĠ Ġvar Ġcursor : ĠCursor ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġvar Ġm Row ID Column : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Has Stable Ids ( true ) ĊĠĠĠĠĠĠĠ Ġswap Cursor ( c ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġon Bind ViewHolder ( holder : ĠV H , Ġcursor : ĠCursor ?) ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠV H , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Data Valid ( cursor )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Cannot Ġbind Ġview Ġholder Ġwhen Ġcursor Ġis Ġin Ġinvalid Ġstate .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( cursor ?. moveTo Position ( position ) Ġ!= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Could Ġnot Ġmove Ġcursor Ġto Ġposition Ġ" Ġ+ Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" Ġwhen Ġtrying Ġto Ġbind Ġview Ġholder ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġon Bind ViewHolder ( holder , Ġcursor !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! cursor !!. moveTo Position ( position )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Could Ġnot Ġmove Ġcursor Ġto Ġposition Ġ" Ġ+ Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" Ġwhen Ġtrying Ġto Ġget Ġitem Ġview Ġtype .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠgetItem ViewType ( position , Ġcursor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun ĠgetItem ViewType ( position : ĠInt , Ġcursor : ĠCursor ?): ĠInt ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Data Valid ( cursor )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor !!. count ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Id ( position : ĠInt ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Data Valid ( cursor )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Cannot Ġlookup Ġitem Ġid Ġwhen Ġcursor Ġis Ġin Ġinvalid Ġstate .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! cursor !!. moveTo Position ( position )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Could Ġnot Ġmove Ġcursor Ġto Ġposition Ġ" Ġ+ Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" Ġwhen Ġtrying Ġto Ġget Ġan Ġitem Ġid ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcursor !!. getLong ( m Row ID Column ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġswap Cursor ( new Cursor : ĠCursor ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( new Cursor Ġ=== Ġcursor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( new Cursor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Ġ= Ġnew Cursor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Row ID Column Ġ= Ġcursor !!. getColumnIndex OrThrow ( Media Store . Files . File Columns ._ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnotify Ġthe Ġob servers Ġabout Ġthe Ġnew Ġcursor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Range Removed ( 0 , Ġitem Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Row ID Column Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Data Valid ( cursor : ĠCursor ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcursor Ġ!= Ġnull Ġ&& Ġ! cursor . is Closed ĊĠĠĠ Ġ} Ċ } Ċ