Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1578)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java

Issue 2285833002: Fix suggestion dismissing when underlying data changes (Closed)
Patch Set: Import SuppressFBWarnings from the right namespace Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java
index 8b9abcbff4327e7afb4e6ecaa95d514a7ecadcfa..8ad02b2c4309375317ef6bf73e8f5bd80cd48170 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java
@@ -69,8 +69,7 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder>
@Override
public void onSwiped(ViewHolder viewHolder, int direction) {
mRecyclerView.onItemDismissStarted(viewHolder.itemView);
-
- NewTabPageAdapter.this.dismissItem(viewHolder);
+ NewTabPageAdapter.this.dismissItem(viewHolder.getAdapterPosition());
}
@Override
@@ -108,7 +107,7 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder>
float dX, float dY, int actionState, boolean isCurrentlyActive) {
assert viewHolder instanceof NewTabPageViewHolder;
- ((NewTabPageViewHolder) viewHolder).updateViewStateForDismiss(dX);
+ mRecyclerView.updateViewStateForDismiss(dX, viewHolder);
// The super implementation performs animation and elevation, but only the animation is
// needed.
@@ -311,6 +310,18 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder>
return getGroupPositionOffset(mBottomSpacer);
}
+ public int getSuggestionPosition(String suggestionId) {
+ List<NewTabPageItem> items = getItems();
+ for (int i = 0; i < items.size(); i++) {
+ NewTabPageItem item = items.get(i);
+ if (item instanceof SnippetArticle
+ && ((SnippetArticle) item).mId.equals(suggestionId)) {
+ return i;
+ }
+ }
+ return RecyclerView.NO_POSITION;
+ }
+
/** Start a request for new snippets. */
public void reloadSnippets() {
SnippetsBridge.fetchSnippets(/*forceRequest=*/true);
@@ -360,10 +371,8 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder>
mRecyclerView = (NewTabPageRecyclerView) recyclerView;
}
- public void dismissItem(ViewHolder itemViewHolder) {
- int position = itemViewHolder.getAdapterPosition();
+ public void dismissItem(int position) {
SnippetArticle suggestion = (SnippetArticle) getItems().get(position);
-
mSuggestionsSource.getSuggestionVisited(suggestion, new Callback<Boolean>() {
@Override
public void onResult(Boolean result) {
@@ -373,9 +382,8 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder>
}
});
- itemViewHolder.itemView.announceForAccessibility(
- itemViewHolder.itemView.getResources().getString(
- R.string.ntp_accessibility_item_removed, suggestion.mTitle));
+ mRecyclerView.announceForAccessibility(mRecyclerView.getResources().getString(
+ R.string.ntp_accessibility_item_removed, suggestion.mTitle));
mSuggestionsSource.dismissSuggestion(suggestion);
SuggestionsSection section = (SuggestionsSection) getGroup(position);

Powered by Google App Engine
This is Rietveld 408576698