Как добавить флажок при использовании библиотеки подкачки и комнаты Android

#android #kotlin #android-jetpack #android-paging #android-paging-library

#Android #kotlin #android-jetpack #android-подкачка #android-paging-library

Вопрос:

Я использую библиотеку подкачки Android библиотеку комнат.

 @Entity
data class Customer {
  @PrimaryKey(autoGererate = true) 
  val id: Long,
  val name: String
}

@Dao
interface CustomerDao {
 @Query("SELECT * FROM Customer")
 fun get(): DataSource.Factory<Int, Customer>
}
  

Я бы хотел установить флажок в PagedListAdapter, когда пользователь нажимает на элемент клиента.
И я хотел бы предоставить функцию проверки всех элементов во фрагменте.
Отмеченный элемент сохраняется в ViewModel.

Но я не хочу использовать GetItem(int: Position) и функцию notifyItemChanged, как показано ниже.

 // in fragment
viewModel.selected.observe(lifecyclerOwner, Observer {
  adapter.selectedCustomers = it
})

// in adapter
 var selectedCustomers: List<Customer>()
 set(value) {
    for (i in until itemCount) {
      getItem(i)?.id?.let {
         if (selected item id is changed) {
             notifyItemChanged(i)
         }
      }
   }
 }
  

Это потому, что GetItem вызывает mPagedList.loadAround(index) в AsyncPagedListDiffer

Могу ли я изменить Customer на CheckableCustomer и использовать DiffUtil.ItemCallback вместо notifyDataSetChanged?

   data class CheckableCustomer {
    val customer: Customer,
    val isChecked: Boolean
  }
  

Как изменить источник данных.Factory<Int, Customer> из dao Room db в CheckableCustomer?

Я хочу изменить клиента на CheckableCustomer и использовать PagedListAdapter<CheckableCustomer, VH>(обратный вызов)

Или есть ли какое-нибудь хорошее решение с использованием источника данных базы данных room и флажка?