Skip to content

Commit bf55ed2

Browse files
authored
Merge pull request #8972 from Stypox/fix-suggestions-listadapter
Fix various issues in the search suggestions list
2 parents f26bf33 + 28b34f3 commit bf55ed2

2 files changed

Lines changed: 7 additions & 4 deletions

File tree

app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,8 @@ protected void initViews(final View rootView, final Bundle savedInstanceState) {
340340
super.initViews(rootView, savedInstanceState);
341341

342342
searchBinding.suggestionsList.setAdapter(suggestionListAdapter);
343+
// animations are just strange and useless, since the suggestions keep changing too much
344+
searchBinding.suggestionsList.setItemAnimator(null);
343345
new ItemTouchHelper(new ItemTouchHelper.Callback() {
344346
@Override
345347
public int getMovementFlags(@NonNull final RecyclerView recyclerView,
@@ -944,8 +946,8 @@ public void handleSuggestions(@NonNull final List<SuggestionItem> suggestions) {
944946
if (DEBUG) {
945947
Log.d(TAG, "handleSuggestions() called with: suggestions = [" + suggestions + "]");
946948
}
947-
searchBinding.suggestionsList.smoothScrollToPosition(0);
948-
suggestionListAdapter.submitList(suggestions);
949+
suggestionListAdapter.submitList(suggestions,
950+
() -> searchBinding.suggestionsList.scrollToPosition(0));
949951

950952
if (suggestionsPanelVisible && isErrorPanelVisible()) {
951953
hideLoading();

app/src/main/java/org/schabi/newpipe/fragments/list/search/SuggestionListAdapter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,14 @@ private static class SuggestionItemCallback extends DiffUtil.ItemCallback<Sugges
8080
@Override
8181
public boolean areItemsTheSame(@NonNull final SuggestionItem oldItem,
8282
@NonNull final SuggestionItem newItem) {
83-
return oldItem.query.equals(newItem.query);
83+
return oldItem.fromHistory == newItem.fromHistory
84+
&& oldItem.query.equals(newItem.query);
8485
}
8586

8687
@Override
8788
public boolean areContentsTheSame(@NonNull final SuggestionItem oldItem,
8889
@NonNull final SuggestionItem newItem) {
89-
return oldItem.equals(newItem);
90+
return true; // items' contents never change; the list of items themselves does
9091
}
9192
}
9293
}

0 commit comments

Comments
 (0)