Make smart reply insertion logic more robust

Specifically, this removes the assumptions that the smart reply view
container should only container one child, and that the smart replies
will be the first view.

Bug: 174575121
Test: manual, atest
Change-Id: If2b98f6faac3e7cc4ac63bd114f25df1f604aa5e
This commit is contained in:
Steve Elliott
2021-04-18 22:59:25 -04:00
parent 708d39e53e
commit 8362a52c4c

View File

@@ -1481,18 +1481,26 @@ public class NotificationContentView extends FrameLayout {
return null;
}
SmartReplyView smartReplyView = null;
if (smartReplyContainer.getChildCount() == 1
&& smartReplyContainer.getChildAt(0) instanceof SmartReplyView) {
// Search for an existing SmartReplyView
int index = 0;
final int childCount = smartReplyContainer.getChildCount();
for (; index < childCount; index++) {
View child = smartReplyContainer.getChildAt(index);
if (child.getId() == R.id.smart_reply_view && child instanceof SmartReplyView) {
break;
}
}
if (index < childCount) {
// If we already have a SmartReplyView - replace it with the newly inflated one. The
// newly inflated one is connected to the new inflated smart reply/action buttons.
smartReplyContainer.removeAllViews();
smartReplyContainer.removeViewAt(index);
}
if (smartReplyContainer.getChildCount() == 0
&& inflatedSmartReplyViewHolder != null
SmartReplyView smartReplyView = null;
if (inflatedSmartReplyViewHolder != null
&& inflatedSmartReplyViewHolder.getSmartReplyView() != null) {
smartReplyView = inflatedSmartReplyViewHolder.getSmartReplyView();
smartReplyContainer.addView(smartReplyView);
smartReplyContainer.addView(smartReplyView, index);
}
if (smartReplyView != null) {
smartReplyView.resetSmartSuggestions(smartReplyContainer);