diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/HomeActivity.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/HomeActivity.kt index 88f5a40c..a60904ee 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/HomeActivity.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/HomeActivity.kt @@ -13,7 +13,11 @@ import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.SearchView import androidx.core.view.doOnNextLayout import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.* +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.ItemTouchHelper +import androidx.recyclerview.widget.RecyclerView +import androidx.recyclerview.widget.StaggeredGridLayoutManager import androidx.work.Constraints import androidx.work.ExistingPeriodicWorkPolicy import androidx.work.PeriodicWorkRequestBuilder @@ -477,13 +481,17 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar ItemCardAdapter( this, items, - ) + ) { + updateItems(it) + } } else { recyclerAdapter = ItemListAdapter( this, items, - ) + ) { + updateItems(it) + } binding.recyclerView.addItemDecoration( DividerItemDecoration( @@ -656,6 +664,10 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener, DIAwar else -> repository.badgeUnread.value // if !elementsShown then unread are fetched. } + private fun updateItems(adapterItems: ArrayList) { + items = adapterItems + } + private fun handleRecurringTask() { if (appSettingsService.isPeriodicRefreshEnabled()) { val myConstraints = diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemCardAdapter.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemCardAdapter.kt index a8565a57..2175fd7b 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemCardAdapter.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemCardAdapter.kt @@ -31,6 +31,7 @@ import org.kodein.di.instance class ItemCardAdapter( override val app: Activity, override val items: ArrayList, + override val updateHomeItems: (ArrayList) -> Unit, ) : ItemsAdapter() { override lateinit var binding: CardItemBinding private val imageMaxHeight: Int = @@ -82,7 +83,7 @@ class ItemCardAdapter( val itm = items[position] handleClickListeners(binding, position) - openLink(binding, position) + handleLinkOpening(binding, position) binding.favButton.isSelected = itm.starred if (appSettingsService.getPublicAccess()) { diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemListAdapter.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemListAdapter.kt index 098433b5..ac43bd62 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemListAdapter.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemListAdapter.kt @@ -22,6 +22,7 @@ import org.kodein.di.instance class ItemListAdapter( override val app: Activity, override val items: ArrayList, + override val updateHomeItems: (ArrayList) -> Unit, ) : ItemsAdapter() { override lateinit var binding: ListItemBinding @@ -44,7 +45,7 @@ class ItemListAdapter( with(holder) { val itm = items[position] - openLink(binding, position) + handleLinkOpening(binding, position) binding.title.text = itm.title.getHtmlDecoded() diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemsAdapter.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemsAdapter.kt index 1ff89ed2..e3ea18c5 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemsAdapter.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemsAdapter.kt @@ -3,7 +3,6 @@ package bou.amine.apps.readerforselfossv2.android.adapters import android.app.Activity import android.content.Context import android.graphics.Color -import android.util.Log import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import androidx.viewbinding.ViewBinding @@ -25,12 +24,14 @@ abstract class ItemsAdapter : RecyclerView.Adapte abstract val binding: ViewBinding abstract val appSettingsService: AppSettingsService abstract val app: Activity + abstract val updateHomeItems: (ArrayList) -> Unit protected val c: Context get() = app.baseContext fun updateAllItems(items: ArrayList) { this.items.clear() this.items.addAll(items) + updateHomeItems(items) notifyDataSetChanged() } @@ -76,12 +77,8 @@ abstract class ItemsAdapter : RecyclerView.Adapte s.show() } - protected fun openLink(holderBinding: ViewBinding, position: Int) { + protected fun handleLinkOpening(holderBinding: ViewBinding, position: Int) { holderBinding.root.setOnClickListener { - Log.d( - "RecyclerViewDebug", - "Clicked position: $position, Item ID: ${items[position].id}" - ) repository.setReaderItems(items) c.openItemUrl( position, @@ -112,6 +109,7 @@ abstract class ItemsAdapter : RecyclerView.Adapte items.remove(item) notifyItemRemoved(position) notifyItemRangeChanged(position, itemCount) + updateHomeItems(items) } else { notifyItemChanged(position) } @@ -140,17 +138,15 @@ abstract class ItemsAdapter : RecyclerView.Adapte ) { items.add(position, item) notifyItemInserted(position) + updateHomeItems(items) } fun addItemsAtEnd(newItems: List) { val oldSize = items.size items.addAll(newItems) notifyItemRangeInserted(oldSize, newItems.size) + updateHomeItems(items) } override fun getItemCount(): Int = items.size - - override fun getItemId(position: Int): Long { - return items[position].id.toLong() - } }