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

Commit 88ce86bf authored by Alan Viverette's avatar Alan Viverette Committed by The Android Automerger
Browse files

Revert "Synchronize selected item data on-demand after data set invalidation"

This CL was a can of worms. More extensive changes are
needed to decouple AdapterView state from measure/layout
passes.

This reverts commit abed07f6.

Change-Id: I4e4e01692a1f660a04e9dfd16db882f13c3d0b94
parent 6fcd99f3
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -5308,13 +5308,6 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
        }
    }

    @Override
    void syncSelectedItem() {
        if (mDataChanged) {
            layoutChildren();
        }
    }

    @Override
    protected void handleDataChanged() {
        int count = mItemCount;
+10 −49
Original line number Diff line number Diff line
@@ -551,67 +551,37 @@ public abstract class AdapterView<T extends Adapter> extends ViewGroup {
    }

    /**
     * Returns the position of the currently selected item within the adapter's
     * data set, or {@link #INVALID_POSITION} if there is nothing selected.
     * <p>
     * <strong>Note:</strong> Prior to {@link android.os.Build.VERSION_CODES#MNC},
     * calling this method between an adapter data set change and a subsequent
     * layout pass could return invalid data.
     * Return the position of the currently selected item within the adapter's data set
     *
     * @return the selected item's position (starting at 0), or
     *         {@link #INVALID_POSITION} if there is nothing selected
     * @return int Position (starting at 0), or {@link #INVALID_POSITION} if there is nothing selected.
     */
    @ViewDebug.CapturedViewProperty
    public int getSelectedItemPosition() {
        syncSelectedItem();
        return mNextSelectedPosition;
    }

    /**
     * Returns the row ID corresponding to the currently selected item, or
     * {@link #INVALID_ROW_ID} if nothing is selected.
     * <p>
     * <strong>Note:</strong> Prior to {@link android.os.Build.VERSION_CODES#MNC},
     * calling this method between an adapter data set change and a subsequent
     * layout pass could return invalid data.
     *
     * @return the selected item's row ID, or {@link #INVALID_ROW_ID} if
     *         nothing is selected
     * @return The id corresponding to the currently selected item, or {@link #INVALID_ROW_ID}
     * if nothing is selected.
     */
    @ViewDebug.CapturedViewProperty
    public long getSelectedItemId() {
        syncSelectedItem();
        return mNextSelectedRowId;
    }

    /**
     * Returns the view corresponding to the currently selected item, or
     * {@code null} if nothing is selected.
     * <p>
     * <strong>Note:</strong> Prior to {@link android.os.Build.VERSION_CODES#MNC},
     * calling this method between an adapter data set change and a subsequent
     * layout pass could return inconsistent data.
     *
     * @return the selected item's view, or {@code null} if nothing is selected
     * @return The view corresponding to the currently selected item, or null
     * if nothing is selected
     */
    @Nullable
    public abstract View getSelectedView();

    /**
     * Returns the data corresponding to the currently selected item, or
     * {@code null} if nothing is selected.
     * <p>
     * <strong>Note:</strong> Prior to {@link android.os.Build.VERSION_CODES#MNC},
     * calling this method between an adapter data set change and a subsequent
     * layout pass could return inconsistent data.
     *
     * @return the data corresponding to the currently selected item, or
     *         {@code null} if there is nothing selected.
     * @return The data corresponding to the currently selected item, or
     * null if there is nothing selected.
     */
    @Nullable
    public Object getSelectedItem() {
        final T adapter = getAdapter();
        final int selection = getSelectedItemPosition();
        T adapter = getAdapter();
        int selection = getSelectedItemPosition();
        if (adapter != null && adapter.getCount() > 0 && selection >= 0) {
            return adapter.getItem(selection);
        } else {
@@ -619,15 +589,6 @@ public abstract class AdapterView<T extends Adapter> extends ViewGroup {
        }
    }

    /**
     * Synchronizes the selected item's position and ID, if necessary.
     */
    void syncSelectedItem() {
        if (mDataChanged) {
            onLayout(false, mLeft, mTop, mRight, mBottom);
        }
    }

    /**
     * @return The number of items owned by the Adapter associated with this
     *         AdapterView. (This is the number of data items, which may be