From c5b0360da0c05ee8d2fdddc78c425582ed39e35d Mon Sep 17 00:00:00 2001 From: "joosung.park" Date: Sun, 8 Nov 2020 14:04:40 +0900 Subject: [PATCH] =?UTF-8?q?RxRecyclerViewAdapter=20onViewRecycled=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/joosung/rxrecycleradapter/RxRecyclerAdapter.kt | 10 +++++++++- .../joosung/rxrecycleradapter/RxRecyclerAdapterData.kt | 4 +++- .../rxrecycleradapter/RxRecyclerAdapterViewHolder.kt | 2 ++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/RxRecyclerAdapter/src/main/java/com/joosung/rxrecycleradapter/RxRecyclerAdapter.kt b/RxRecyclerAdapter/src/main/java/com/joosung/rxrecycleradapter/RxRecyclerAdapter.kt index 90c5c7a..f7ac1bd 100644 --- a/RxRecyclerAdapter/src/main/java/com/joosung/rxrecycleradapter/RxRecyclerAdapter.kt +++ b/RxRecyclerAdapter/src/main/java/com/joosung/rxrecycleradapter/RxRecyclerAdapter.kt @@ -12,6 +12,10 @@ class RxRecyclerAdapter constructor( private var mDataSet: MutableList = mutableListOf() + init { + setHasStableIds(true) + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RxRecyclerAdapterViewHolder = delegate.viewHolderForViewType(parent, viewType) override fun onBindViewHolder(holderRecycler: RxRecyclerAdapterViewHolder, position: Int) { @@ -61,7 +65,11 @@ class RxRecyclerAdapter constructor( } } - // FIXME: 임시 + override fun onViewRecycled(holder: RxRecyclerAdapterViewHolder) { + super.onViewRecycled(holder) + holder.onViewRecycled() + } + interface Delegate { fun inflate(parent: ViewGroup, layoutResId: Int): View = LayoutInflater.from(parent.context).inflate(layoutResId, parent, false) fun getItemViewType(position: Int, item: D): Int diff --git a/RxRecyclerAdapter/src/main/java/com/joosung/rxrecycleradapter/RxRecyclerAdapterData.kt b/RxRecyclerAdapter/src/main/java/com/joosung/rxrecycleradapter/RxRecyclerAdapterData.kt index 5b7839c..ec9bb7c 100644 --- a/RxRecyclerAdapter/src/main/java/com/joosung/rxrecycleradapter/RxRecyclerAdapterData.kt +++ b/RxRecyclerAdapter/src/main/java/com/joosung/rxrecycleradapter/RxRecyclerAdapterData.kt @@ -1,5 +1,7 @@ package com.joosung.rxrecycleradapter -interface RxRecyclerAdapterData +interface RxRecyclerAdapterData { + val id: Long get() = this::class.simpleName.hashCode().toLong() +} diff --git a/RxRecyclerAdapter/src/main/java/com/joosung/rxrecycleradapter/RxRecyclerAdapterViewHolder.kt b/RxRecyclerAdapter/src/main/java/com/joosung/rxrecycleradapter/RxRecyclerAdapterViewHolder.kt index 3a4f122..68aa4c6 100644 --- a/RxRecyclerAdapter/src/main/java/com/joosung/rxrecycleradapter/RxRecyclerAdapterViewHolder.kt +++ b/RxRecyclerAdapter/src/main/java/com/joosung/rxrecycleradapter/RxRecyclerAdapterViewHolder.kt @@ -21,4 +21,6 @@ abstract class RxRecyclerAdapterViewHolder(itemVie dbag = CompositeDisposable() parentDisposable.add(dbag) } + + open fun onViewRecycled() { } }