pratikbutani / MultiSelectSpinner

Android - Select Multiple Items from Spinner with Filtration.
http://pratikbutani.github.io/MultiSelectSpinner/
GNU General Public License v3.0
253 stars 125 forks source link
android android-library android-spinner filter gradle hacktoberfest multiselect multiselect-library spinner

Codacy Badge

MultiSelectSpinner

Android Library to Select multiple items from Spinner

Click to see video of example:

MultiSelectSpinner

How to import

Add it in your root build.gradle at the end of repositories

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Add dependency in build.gradle

implementation 'com.github.pratikbutani:MultiSelectSpinner:1.0.1'

Recent Changes

How to use SINGLE ITEM SELECTION

SINGLE ITEM SELECTION SPINNER (XML Code)

<com.androidbuts.multispinnerfilter.SingleSpinnerSearch
        android:id="@+id/singleItemSelectionSpinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        app:hintText="Single Selection Spinner" />

SINGLE ITEM SELECTION SPINNER (Java Code)

    /******** MUST READ ALL COMMENTS AS DOCUMENTATION *********/
    /**
     * Single Item Selection Spinner Demo
     */
    SingleSpinnerSearch singleSpinnerSearch = findViewById(R.id.singleItemSelectionSpinner);

    // Pass true, If you want color separation. Otherwise false. default = false.
    singleSpinnerSearch.setColorseparation(true);

    // Pass true If you want searchView above the list. Otherwise false. default = true.
    singleSpinnerSearch.setSearchEnabled(true);

    // A text that will display in search hint.
    singleSpinnerSearch.setSearchHint("Select your mood");

    // Removed second parameter, position. Its not required now..
    // If you want to pass preselected items, you can do it while making listArray,
    // Pass true in setSelected of any item that you want to preselect
    // LOGICALLY, PASS Only One Item As SELECTED...
    singleSpinnerSearch.setItems(listArray0, new SingleSpinnerListener() {
        @Override
        public void onItemsSelected(KeyPairBoolData selectedItem) {
            Log.i(TAG, "Selected Item : " + selectedItem.getName());
        }

        @Override
        public void onClear() {
            Toast.makeText(MainActivity.this, "Cleared Selected Item", Toast.LENGTH_SHORT).show();
        }
    });

How to use MULTIPLE ITEM SELECTION SPINNER

MULTIPLE ITEM SELECTION SPINNER (XML Code)

<com.androidbuts.multispinnerfilter.MultiSpinnerSearch
    android:id="@+id/multipleItemSelectionSpinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    app:hintText="Multi Item Selection" />

MULTIPLE ITEM SELECTION SPINNER (Java Code)

    /**
     * Search MultiSelection Spinner (With Search/Filter Functionality)
     *
     *  Using MultiSpinnerSearch class
     */
    MultiSpinnerSearch multiSelectSpinnerWithSearch = findViewById(R.id.multipleItemSelectionSpinner);

    // Pass true If you want searchView above the list. Otherwise false. default = true.
    multiSelectSpinnerWithSearch.setSearchEnabled(true);

    // A text that will display in search hint.
    multiSelectSpinnerWithSearch.setSearchHint("Select your mood");

    // Set text that will display when search result not found...
    multiSelectSpinnerWithSearch.setEmptyTitle("Not Data Found!");

    // If you will set the limit, this button will not display automatically.
    multiSelectSpinnerWithSearch.setShowSelectAllButton(true);

        //A text that will display in clear text button
    multiSelectSpinnerWithSearch.setClearText("Close & Clear");

    // Removed second parameter, position. Its not required now..
    // If you want to pass preselected items, you can do it while making listArray,
    // Pass true in setSelected of any item that you want to preselect
    multiSelectSpinnerWithSearch.setItems(listArray1, new MultiSpinnerListener() {
        @Override
        public void onItemsSelected(List<KeyPairBoolData> items) {
            for (int i = 0; i < items.size(); i++) {
                if (items.get(i).isSelected()) {
                    Log.i(TAG, i + " : " + items.get(i).getName() + " : " + items.get(i).isSelected());
                }
            }
        }
    });

    /**
     * If you want to set limit as maximum item should be selected is 2.
     * For No limit -1 or do not call this method.
     *
     */
    multiSelectSpinnerWithSearch.setLimit(2, new MultiSpinnerSearch.LimitExceedListener() {
        @Override
        public void onLimitListener(KeyPairBoolData data) {
            Toast.makeText(getApplicationContext(),
                    "Limit exceed ", Toast.LENGTH_LONG).show();
        }
    });

Awesome contributors :star_struck:

Made with contributors-img.

Buy a cup of coffee

If you found this project helpful or you learned something from the source code and want to thank me, consider buying me a cup of ☕️ PayPal

Do not forget to give star if its useful to you. :)