From 5f75a263d989087c47fb41000fbce961b0f7dfa9 Mon Sep 17 00:00:00 2001 From: Hunter Kehoe Date: Sun, 5 Jun 2022 19:14:33 -0600 Subject: [PATCH] redraw selected subscription list items individually --- app/src/main/java/io/heckel/ntfy/ui/MainActivity.kt | 8 ++------ app/src/main/java/io/heckel/ntfy/ui/MainAdapter.kt | 9 +++++++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/io/heckel/ntfy/ui/MainActivity.kt b/app/src/main/java/io/heckel/ntfy/ui/MainActivity.kt index cd77ed6..6781f98 100644 --- a/app/src/main/java/io/heckel/ntfy/ui/MainActivity.kt +++ b/app/src/main/java/io/heckel/ntfy/ui/MainActivity.kt @@ -538,7 +538,6 @@ class MainActivity : AppCompatActivity(), ActionMode.Callback, AddFragment.Subsc finishActionMode() } else { actionMode!!.title = adapter.selected.size.toString() - redrawList() } } @@ -593,8 +592,7 @@ class MainActivity : AppCompatActivity(), ActionMode.Callback, AddFragment.Subsc private fun beginActionMode(subscription: Subscription) { actionMode = startActionMode(this) - adapter.selected.add(subscription.id) - redrawList() + adapter.toggleSelection(subscription.id) // Fade out FAB fab.alpha = 1f @@ -647,9 +645,7 @@ class MainActivity : AppCompatActivity(), ActionMode.Callback, AddFragment.Subsc if (!this::mainList.isInitialized) { return } - runOnUiThread { - mainList.adapter = adapter // Oh, what a hack ... - } + adapter.notifyItemRangeChanged(0, adapter.currentList.size) } companion object { diff --git a/app/src/main/java/io/heckel/ntfy/ui/MainAdapter.kt b/app/src/main/java/io/heckel/ntfy/ui/MainAdapter.kt index aebeadc..0ffa4fa 100644 --- a/app/src/main/java/io/heckel/ntfy/ui/MainAdapter.kt +++ b/app/src/main/java/io/heckel/ntfy/ui/MainAdapter.kt @@ -2,6 +2,7 @@ package io.heckel.ntfy.ui import android.content.Context import android.graphics.BitmapFactory +import android.graphics.Color import android.net.Uri import android.view.LayoutInflater import android.view.View @@ -46,6 +47,12 @@ class MainAdapter(private val repository: Repository, private val onClick: (Subs } else { selected.add(subscriptionId) } + + if (selected.size != 0) { + val listIds = currentList.map { subscription -> subscription.id } + val subscriptionPosition = listIds.indexOf(subscriptionId) + notifyItemChanged(subscriptionPosition) + } } /* ViewHolder for Topic, takes in the inflated view and the onClick behavior. */ @@ -111,6 +118,8 @@ class MainAdapter(private val repository: Repository, private val onClick: (Subs itemView.setOnLongClickListener { onLongClick(subscription); true } if (selected.contains(subscription.id)) { itemView.setBackgroundResource(Colors.itemSelectedBackground(context)) + } else { + itemView.setBackgroundColor(Color.TRANSPARENT); } } }