diff --git a/core/src/main/kotlin/com/melih/core/base/recycler/BasePagingListAdapter.kt b/core/src/main/kotlin/com/melih/core/base/recycler/BasePagingListAdapter.kt index e3ec4bc..cfe44bc 100644 --- a/core/src/main/kotlin/com/melih/core/base/recycler/BasePagingListAdapter.kt +++ b/core/src/main/kotlin/com/melih/core/base/recycler/BasePagingListAdapter.kt @@ -9,16 +9,12 @@ import androidx.recyclerview.widget.RecyclerView /** * Base adapter to reduce boilerplate on creating / binding view holders. - * - * */ abstract class BasePagingListAdapter( callback: DiffUtil.ItemCallback, - private val clickListener: (T?) -> Unit + private val clickListener: (T) -> Unit ) : PagedListAdapter>(callback) { - private var itemClickListener: ((T) -> Unit)? = null - /** * This method will be called to create view holder to obfuscate layout inflation creation / process * @@ -46,14 +42,14 @@ abstract class BasePagingListAdapter( * Calls [bind][BaseViewHolder.bind] on view holders */ override fun onBindViewHolder(holder: BaseViewHolder, position: Int) { - val item = getItem(position) + getItem(position)?.also { item -> + holder.itemView.setOnClickListener { view -> + clickListener(item) + } - holder.itemView.setOnClickListener { - clickListener(item) + holder.bind(item) } - - holder.bind(item) } } @@ -68,5 +64,5 @@ abstract class BaseViewHolder(binding: ViewDataBinding) : RecyclerView.ViewHo * @param item entity * @param position position from adapter */ - abstract fun bind(item: T?) + abstract fun bind(item: T) } diff --git a/features/launches/src/main/kotlin/com/melih/list/ui/LaunchesFragment.kt b/features/launches/src/main/kotlin/com/melih/list/ui/LaunchesFragment.kt index 8f27757..816f40c 100644 --- a/features/launches/src/main/kotlin/com/melih/list/ui/LaunchesFragment.kt +++ b/features/launches/src/main/kotlin/com/melih/list/ui/LaunchesFragment.kt @@ -70,8 +70,8 @@ class LaunchesFragment : BaseDaggerFragment(), SwipeRefreshLayout.O //} } - private fun onItemSelected(item: LaunchEntity?) { - startActivity(Actions.openDetailFor(item?.id ?: -1L)) + private fun onItemSelected(item: LaunchEntity) { + startActivity(Actions.openDetailFor(item.id)) } //private fun onSearchExpand() { diff --git a/features/launches/src/main/kotlin/com/melih/list/ui/adapters/LaunchesAdapter.kt b/features/launches/src/main/kotlin/com/melih/list/ui/adapters/LaunchesAdapter.kt index 1547ef5..8763d34 100644 --- a/features/launches/src/main/kotlin/com/melih/list/ui/adapters/LaunchesAdapter.kt +++ b/features/launches/src/main/kotlin/com/melih/list/ui/adapters/LaunchesAdapter.kt @@ -8,7 +8,7 @@ import com.melih.core.base.recycler.BaseViewHolder import com.melih.list.databinding.LaunchRowBinding import com.melih.repository.entities.LaunchEntity -class LaunchesAdapter(itemClickListener: (LaunchEntity?) -> Unit) : BasePagingListAdapter( +class LaunchesAdapter(itemClickListener: (LaunchEntity) -> Unit) : BasePagingListAdapter( object : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: LaunchEntity, newItem: LaunchEntity): Boolean = oldItem.id == newItem.id @@ -30,10 +30,10 @@ class LaunchesAdapter(itemClickListener: (LaunchEntity?) -> Unit) : BasePagingLi class LaunchesViewHolder(private val binding: LaunchRowBinding) : BaseViewHolder(binding) { - override fun bind(item: LaunchEntity?) { + override fun bind(item: LaunchEntity) { binding.entity = item - val missions = item?.missions + val missions = item.missions binding.tvDescription.text = if (!missions.isNullOrEmpty()) missions[0].description else "" binding.executePendingBindings()