From 58c14f7596248c1d252cc0deaed8ac6a0d4587a9 Mon Sep 17 00:00:00 2001 From: Maurice Lam Date: Thu, 30 Mar 2017 21:43:23 -0700 Subject: [PATCH] Fix suggested action custom view binding Remove all the views before adding the remote views again, so the card will not have multiple custom views on top of each other. Test: cd tests/robotests && mma Change-Id: Id41bfb962c08e8d1ee6534e0cf44d173a1f1910f --- .../settings/dashboard/DashboardAdapter.java | 1 + .../dashboard/DashboardAdapterTest.java | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java index 325df5b89fd..13474dd5946 100644 --- a/src/com/android/settings/dashboard/DashboardAdapter.java +++ b/src/com/android/settings/dashboard/DashboardAdapter.java @@ -417,6 +417,7 @@ public class DashboardAdapter extends RecyclerView.Adapter packages = makeSuggestions("pkg1"); + RemoteViews remoteViews = mock(RemoteViews.class); + FrameLayout layout = new FrameLayout(context); + Button primary = new Button(context); + primary.setId(android.R.id.primary); + layout.addView(primary); + doReturn(layout).when(remoteViews).apply(any(Context.class), any(ViewGroup.class)); + packages.get(0).remoteViews = remoteViews; + mDashboardAdapter.setCategoriesAndSuggestions(Collections.emptyList(), packages); + mSuggestionHolder = mDashboardAdapter.onCreateViewHolder( + new FrameLayout(context), + R.layout.suggestion_tile_card); + + mDashboardAdapter.onBindViewHolder(mSuggestionHolder, 1); + mDashboardAdapter.onBindViewHolder(mSuggestionHolder, 1); + + ViewGroup itemView = (ViewGroup) mSuggestionHolder.itemView; + assertThat(itemView.getChildCount()).isEqualTo(1); + } + private List makeSuggestions(String... pkgNames) { final List suggestions = new ArrayList<>(); for (String pkgName : pkgNames) {