MultiSelectSpinner
Android Library to Select multiple items from Spinner
Click to see video of example:
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:-SNAPSHOT'
Recent Changes
- Added Material library.
- Extracted the sample into a separate module.
- Code cleanup.
position
parameter is removed from both types of Spinner. Check comments above the code ofsetItems
selectAll
button added to Select All Items in MultiSelectSpinner.- Code Optimised and Upgraded to latest versions of libraries/dependencies.
- MOST IMP CHANGE You will get all the selected items in the listener instead of all items.
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 🤩
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