package Ġcom . example . list _ adapter _ verify Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . example .* Ċ import Ġcom . example . kotlin demo . List Fragment Ċ import Ġcom . example . kotlin demo . R Ċ Ċ class ĠMy ListAdapter Ġ: ĊĠĠĠ ĠList Adapter < Pair < Int , ĠString >, ĠList Fragment . VH >( ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠDiff Util . Item Callback < Pair < Int , ĠString >>() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( a : ĠPair < Int , ĠString >, Ġb : ĠPair < Int , ĠString >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġa . first Ġ== Ġb . first ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( a : ĠPair < Int , ĠString >, Ġb : ĠPair < Int , ĠString >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġa Ġ== Ġb ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Change Payload ( old Item : ĠPair < Int , ĠString >, Ġnew Item : ĠPair < Int , ĠString >): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġregister Adapter Data Observer ( object Ġ: Ġandroidx . recyclerview . widget . RecyclerView . Adapter Data Observer () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonChanged () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Changed .", Ġ" My ListAdapter ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Range Inserted ( position Start : ĠInt , Ġitem Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Ġinserted .$ position Start , count =$ item Count ", Ġ" My ListAdapter ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Range Changed ( position Start : ĠInt , Ġitem Count : ĠInt , Ġpayload : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" on Ġchanged .$ position Start , count =$ item Count , Ġpay =$ payload ", Ġ" My ListAdapter ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġi : ĠInt ): ĠList Fragment . VH Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠList Fragment . VH ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ). inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item , Ġparent , Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠList Fragment . VH , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . text . text Ġ= ĠgetItem ( position ). toString () ĊĠĠĠĠĠĠĠ Ġlog (" on Bind ViewHolder Ġpos Ġ= Ġ$ position ", Ġ" My ListAdapter ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcommit List ( list : ĠList < Pair < Int , ĠString >> ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog (" submit List : Ġ$ list ") ĊĠĠĠĠĠĠĠ Ġsubmit List ( list ) ĊĠĠĠ Ġ} Ċ } Ċ