diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/SearchResultsAdapter.java b/app/src/main/java/com/keylesspalace/tusky/adapter/SearchResultsAdapter.java index a9dd5dc4c..8bef108ba 100644 --- a/app/src/main/java/com/keylesspalace/tusky/adapter/SearchResultsAdapter.java +++ b/app/src/main/java/com/keylesspalace/tusky/adapter/SearchResultsAdapter.java @@ -101,7 +101,7 @@ public class SearchResultsAdapter extends RecyclerView.Adapter { if (position >= accountList.size()) { if(position >= accountList.size() + concreteStatusList.size()) { HashtagViewHolder holder = (HashtagViewHolder) viewHolder; - int index = position - accountList.size() - statusList.size(); + int index = position - accountList.size() - concreteStatusList.size(); holder.setup(hashtagList.get(index), linkListener); } else { StatusViewHolder holder = (StatusViewHolder) viewHolder; @@ -141,9 +141,11 @@ public class SearchResultsAdapter extends RecyclerView.Adapter { return concreteStatusList.get(position - accountList.size()); } - public void updateStatusAtPosition(StatusViewData.Concrete status, int position) { + public void updateStatusAtPosition(StatusViewData.Concrete status, int position, boolean doNotify) { concreteStatusList.set(position - accountList.size(), status); - notifyItemChanged(position); + if(doNotify) { + notifyItemChanged(position); + } } public void removeStatusAtPosition(int position) { @@ -155,6 +157,7 @@ public class SearchResultsAdapter extends RecyclerView.Adapter { if (results != null) { accountList = results.getAccounts(); statusList = results.getStatuses(); + concreteStatusList.clear(); for(Status status: results.getStatuses()) { concreteStatusList.add(ViewDataUtils.statusToViewData( status, diff --git a/app/src/main/java/com/keylesspalace/tusky/fragment/SearchFragment.kt b/app/src/main/java/com/keylesspalace/tusky/fragment/SearchFragment.kt index b30821011..f190a203b 100644 --- a/app/src/main/java/com/keylesspalace/tusky/fragment/SearchFragment.kt +++ b/app/src/main/java/com/keylesspalace/tusky/fragment/SearchFragment.kt @@ -147,7 +147,8 @@ class SearchFragment : SFragment(), StatusActionListener { status, alwaysShowSensitiveMedia ), - position + position, + false ) }, { t -> Log.d(TAG, "Failed to reblog status " + status.id, t) }) } @@ -166,7 +167,8 @@ class SearchFragment : SFragment(), StatusActionListener { status, alwaysShowSensitiveMedia ), - position + position, + false ) }, { t -> Log.d(TAG, "Failed to favourite status " + status.id, t) }) } @@ -200,7 +202,7 @@ class SearchFragment : SFragment(), StatusActionListener { if (status != null) { val newStatus = StatusViewData.Builder(status) .setIsExpanded(expanded).createStatusViewData() - searchAdapter.updateStatusAtPosition(newStatus, position) + searchAdapter.updateStatusAtPosition(newStatus, position, false) } } @@ -209,7 +211,7 @@ class SearchFragment : SFragment(), StatusActionListener { if (status != null) { val newStatus = StatusViewData.Builder(status) .setIsShowingSensitiveContent(isShowing).createStatusViewData() - searchAdapter.updateStatusAtPosition(newStatus, position) + searchAdapter.updateStatusAtPosition(newStatus, position, true) } } @@ -228,7 +230,7 @@ class SearchFragment : SFragment(), StatusActionListener { val updatedStatus = StatusViewData.Builder(status) .setCollapsed(isCollapsed) .createStatusViewData() - searchAdapter.updateStatusAtPosition(updatedStatus, position) + searchAdapter.updateStatusAtPosition(updatedStatus, position, false) searchRecyclerView.post { searchAdapter.notifyItemChanged(position, updatedStatus) } } @@ -257,7 +259,7 @@ class SearchFragment : SFragment(), StatusActionListener { val newViewData = StatusViewData.Builder(viewData) .setPoll(poll) .createStatusViewData() - searchAdapter.updateStatusAtPosition(newViewData, position) + searchAdapter.updateStatusAtPosition(newViewData, position, true) }, { t -> Log.d(TAG, "Failed to vote in poll " + status.id, t) }) }