From ddfc085f2ba050089213608dbffdae8059718c33 Mon Sep 17 00:00:00 2001 From: Yi-Ling Chuang Date: Thu, 6 Dec 2018 22:13:35 +0800 Subject: [PATCH] Reload data if slice binding returns null at rendering time. We are not able to guarantee the binding results in the pre-check and real binding would always be the same sinc slice may decide what it would be based on some conditions. Hence, we should reload data and refresh UI when it comes to null to prevent from blank suggestion. Bug: 120221527 Test: visual Change-Id: I79790edfe7fc3af7b9c3b3a7df6a7ffa7d405d50 --- .../slices/SliceContextualCardRenderer.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java b/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java index 267fe4dce25..be03c281e9a 100644 --- a/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java +++ b/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java @@ -41,6 +41,7 @@ import androidx.slice.widget.SliceLiveData; import androidx.slice.widget.SliceView; import com.android.settings.R; +import com.android.settings.homepage.contextualcards.CardContentProvider; import com.android.settings.homepage.contextualcards.ContextualCard; import com.android.settings.homepage.contextualcards.ContextualCardFeatureProvider; import com.android.settings.homepage.contextualcards.ContextualCardRenderer; @@ -94,6 +95,8 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, public void bindView(RecyclerView.ViewHolder holder, ContextualCard card) { final SliceViewHolder cardHolder = (SliceViewHolder) holder; final Uri uri = card.getSliceUri(); + //TODO(b/120629936): Take this out once blank card issue is fixed. + Log.d(TAG, "bindView - uri = " + uri); if (!ContentResolver.SCHEME_CONTENT.equals(uri.getScheme())) { Log.w(TAG, "Invalid uri, skipping slice: " + uri); @@ -116,6 +119,11 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, sliceLiveData.observe(mLifecycleOwner, slice -> { if (slice == null) { Log.w(TAG, "Slice is null"); + mContext.getContentResolver().notifyChange(CardContentProvider.URI, null); + return; + } else { + //TODO(b/120629936): Take this out once blank card issue is fixed. + Log.d(TAG, "Slice callback - uri = " + slice.getUri()); } cardHolder.sliceView.setSlice(slice); });