Skip to content

pratikbutani/MultiSelectSpinner

Repository files navigation

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

  • 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 of setItems
  • 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

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