/DropDownList

Android: Custom Drop down list in Android

Primary LanguageJava

Drop-down list is a common UI feature used when we have to select one or more values from a list.
Android SDK provides Spinner widget for implementing drop-down list. But Spinner is limited to single value selection.
So, if we need multi-select drop-down list, it can be done using Pop-up window and multi-select ListView.

DropDownList is a simple implementation of Multi-select drop-down list.
Here, I have used:
1) A TextView : To display selected values and also which acts as anchor view for drop down
2) A Button : To display/hide the drop-down list
3) A Pop-up Window : This is used to represent the drop-down list
4) A ListView : To display the list of values

How this is done? 

1) First the TextView and Button are set up 
2) When the button is clicked, the drop-down list (pop-up window) is displayed:
   The properties of pop-up window are set such that it will be informed of the touch events outside its window.
          
          pw.setBackgroundDrawable(new BitmapDrawable());   
          pw.setOutsideTouchable(true);
  
   TextView is given as anchor view for this pop-up window.
   The ListView is populated with the data source provided.
3) Whenever a value is selected in the list, the TextView is updated with new selected values.
   This is done by maintaining select/unselect information about each value in form of boolean[] 'checkSelecte[]'
4) The TextView displays the selected values in two representations:
    i) Shortened representation: e.g. 'Item 1 & 2 more'
    ii) Complete list of selected values
    These representations can be alternatively when the TextView is clicked

And we are done with Multi-Select Drop-down list !