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

Commit bde7b460 authored by Zhen Zhang's avatar Zhen Zhang
Browse files

Replcae ListView with RecyclerView in Share-sheet

Use RecyclerView and GridLayoutManager to replace ListView in
Share-sheet
Bug: 140502600
Test: Passed all existing unit tests in ChooserActivityTest and
ResolverActivityTest, except two known failure, setShowAtTopToTrue and
setMaxHeight in ResolverActivityTest.

Change-Id: Icca408de1c1f5a56150a0e06ed5a94f7c803de12
parent 1406fca4
Loading
Loading
Loading
Loading
+190 −136

File changed.

Preview size limit exceeded, changes collapsed.

+6 −1
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ public class ChooserListAdapter extends ResolverListAdapter {
    private static final String TAG = "ChooserListAdapter";
    private static final boolean DEBUG = false;

    public static final int NO_POSITION = -1;
    public static final int TARGET_BAD = -1;
    public static final int TARGET_CALLER = 0;
    public static final int TARGET_SERVICE = 1;
@@ -189,7 +190,7 @@ public class ChooserListAdapter extends ResolverListAdapter {
    }

    @Override
    public View onCreateView(ViewGroup parent) {
    View onCreateView(ViewGroup parent) {
        return mInflater.inflate(
                com.android.internal.R.layout.resolve_grid_item, parent, false);
    }
@@ -321,6 +322,10 @@ public class ChooserListAdapter extends ResolverListAdapter {
     */
    @Override
    public TargetInfo targetInfoForPosition(int position, boolean filtered) {
        if (position == NO_POSITION) {
            return null;
        }

        int offset = 0;

        // Direct share targets
+21 −11
Original line number Diff line number Diff line
@@ -97,7 +97,7 @@ public class ResolverActivity extends Activity implements
    @UnsupportedAppUsage
    protected ResolverListAdapter mAdapter;
    private boolean mSafeForwardingMode;
    protected AbsListView mAdapterView;
    private AbsListView mAdapterView;
    private Button mAlwaysButton;
    private Button mOnceButton;
    protected View mProfileView;
@@ -1075,7 +1075,6 @@ public class ResolverActivity extends Activity implements
            mLayoutId = getLayoutResource();
        }
        setContentView(mLayoutId);
        mAdapterView = findViewById(R.id.resolver_list);
        return postRebuildList(rebuildCompleted);
    }

@@ -1114,26 +1113,37 @@ public class ResolverActivity extends Activity implements
            }
        }

        boolean isAdapterViewVisible = true;
        if (count == 0 && mAdapter.getPlaceholderCount() == 0) {
            final TextView emptyView = findViewById(R.id.empty);
            emptyView.setVisibility(View.VISIBLE);
            mAdapterView.setVisibility(View.GONE);
        } else {
            mAdapterView.setVisibility(View.VISIBLE);
            onPrepareAdapterView(mAdapterView, mAdapter);
            isAdapterViewVisible = false;
        }

        onPrepareAdapterView(mAdapter, isAdapterViewVisible);
        return false;
    }

    public void onPrepareAdapterView(AbsListView adapterView, ResolverListAdapter adapter) {
    /**
     * Prepare the scrollable view which consumes data in the list adapter.
     * @param adapter The adapter used to provide data to item views.
     * @param isVisible True if the scrollable view should be visible; false, otherwise.
     */
    public void onPrepareAdapterView(ResolverListAdapter adapter, boolean isVisible) {
        mAdapterView = findViewById(R.id.resolver_list);
        if (!isVisible) {
            mAdapterView.setVisibility(View.GONE);
            return;
        }
        mAdapterView.setVisibility(View.VISIBLE);
        final boolean useHeader = adapter.hasFilteredItem();
        final ListView listView = adapterView instanceof ListView ? (ListView) adapterView : null;
        final ListView listView = mAdapterView instanceof ListView ? (ListView) mAdapterView : null;

        adapterView.setAdapter(mAdapter);
        mAdapterView.setAdapter(mAdapter);

        final ItemClickListener listener = new ItemClickListener();
        adapterView.setOnItemClickListener(listener);
        adapterView.setOnItemLongClickListener(listener);
        mAdapterView.setOnItemClickListener(listener);
        mAdapterView.setOnItemLongClickListener(listener);

        if (mSupportsAlwaysUseOption || mUseLayoutForBrowsables) {
            listView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
+1 −1
Original line number Diff line number Diff line
@@ -491,7 +491,7 @@ public class ResolverListAdapter extends BaseAdapter {
        return view;
    }

    public View onCreateView(ViewGroup parent) {
    View onCreateView(ViewGroup parent) {
        return mInflater.inflate(
                com.android.internal.R.layout.resolve_list_item, parent, false);
    }
+2 −3
Original line number Diff line number Diff line
@@ -55,15 +55,14 @@
                  android:layout_centerHorizontal="true"/>
    </RelativeLayout>

    <ListView
    <com.android.internal.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layoutManager="com.android.internal.widget.GridLayoutManager"
        android:id="@+id/resolver_list"
        android:clipToPadding="false"
        android:background="?attr/colorBackgroundFloating"
        android:scrollbars="none"
        android:listSelector="@color/transparent"
        android:divider="@null"
        android:elevation="1dp"
        android:nestedScrollingEnabled="true"/>