Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 358d0d32 authored by Daichi Hirono's avatar Daichi Hirono
Browse files

Don't add other's child as header or footer

Previously ListView#addHeaderView and ListView#addFooterView accepts a
view which is other's child.

The CL adds precondition check not to accept other's child and make the
methods consistent with ViewGroup#addView.

Bug: 37726743
Test: CtsWidgetTestCases
Change-Id: Ibe11f162e9af3c153254966796349b94468b08f3
parent ad4c31fe
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import android.view.accessibility.AccessibilityNodeProvider;
import android.widget.RemoteViews.RemoteView;

import com.android.internal.R;
import com.android.internal.util.Preconditions;

import com.google.android.collect.Lists;

@@ -335,6 +336,11 @@ public class ListView extends AbsListView {
     * @param isSelectable whether the item is selectable
     */
    public void addHeaderView(View v, Object data, boolean isSelectable) {
        Preconditions.checkState(
                v.getParent() == null,
                "The specified child already has a parent. "
                + "You must call removeView() on the child's parent first.");

        final FixedViewInfo info = new FixedViewInfo();
        info.view = v;
        info.data = data;
@@ -429,6 +435,11 @@ public class ListView extends AbsListView {
     * @param isSelectable true if the footer view can be selected
     */
    public void addFooterView(View v, Object data, boolean isSelectable) {
        Preconditions.checkState(
                v.getParent() == null,
                "The specified child already has a parent. "
                + "You must call removeView() on the child's parent first.");

        final FixedViewInfo info = new FixedViewInfo();
        info.view = v;
        info.data = data;