Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. import android.app.AlertDialog;
  2. import android.content.Context;
  3. import android.content.DialogInterface;
  4. import android.content.DialogInterface.OnCancelListener;
  5. import android.content.DialogInterface.OnMultiChoiceClickListener;
  6. import android.util.AttributeSet;
  7. import android.widget.ArrayAdapter;
  8. import android.widget.Spinner;
  9.  
  10. import java.util.List;
  11.  
  12. public class MultiSpinner extends Spinner implements OnMultiChoiceClickListener, OnCancelListener {
  13.  
  14. private List<String> items;
  15. private boolean[] selected;
  16. private String defaultText;
  17. private MultiSpinnerListener listener;
  18.  
  19. public MultiSpinner(Context context) {
  20. super(context);
  21. }
  22.  
  23. public MultiSpinner(Context arg0, AttributeSet arg1) {
  24. super(arg0, arg1);
  25. }
  26.  
  27. public MultiSpinner(Context arg0, AttributeSet arg1, int arg2) {
  28. super(arg0, arg1, arg2);
  29. }
  30.  
  31. @Override
  32. public void onClick(DialogInterface dialog, int which, boolean isChecked) {
  33. if (isChecked)
  34. selected[which] = true;
  35. else
  36. selected[which] = false;
  37. }
  38.  
  39. @Override
  40. public void onCancel(DialogInterface dialog) {
  41. // refresh text on spinner
  42. StringBuffer spinnerBuffer = new StringBuffer();
  43. boolean someUnselected = false;
  44. for (int i = 0; i < items.size(); i++) {
  45. if (selected[i] == true) {
  46. spinnerBuffer.append(items.get(i));
  47. spinnerBuffer.append(", ");
  48. } else {
  49. someUnselected = true;
  50. }
  51. }
  52. String spinnerText;
  53. if (someUnselected) {
  54. spinnerText = spinnerBuffer.toString();
  55. if (spinnerText.length() > 2)
  56. spinnerText = spinnerText.substring(0, spinnerText.length() - 2);
  57. } else {
  58. spinnerText = defaultText;
  59. }
  60. ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(),
  61. android.R.layout.simple_spinner_item,
  62. new String[]{spinnerText});
  63. setAdapter(adapter);
  64. listener.onItemsSelected(selected);
  65. }
  66.  
  67. @Override
  68. public boolean performClick() {
  69. AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
  70. builder.setMultiChoiceItems(
  71. items.toArray(new CharSequence[items.size()]), selected, this);
  72. builder.setPositiveButton("OK",
  73. new DialogInterface.OnClickListener() {
  74.  
  75. @Override
  76. public void onClick(DialogInterface dialog, int which) {
  77. dialog.cancel();
  78. }
  79. });
  80. builder.setOnCancelListener(this);
  81. builder.show();
  82. return true;
  83. }
  84.  
  85. public void setItems(List<String> items, String allText,
  86. MultiSpinnerListener listener) {
  87. this.items = items;
  88. this.defaultText = allText;
  89. this.listener = listener;
  90.  
  91. // all selected by default
  92. selected = new boolean[items.size()];
  93. for (int i = 0; i < selected.length; i++)
  94. selected[i] = true;
  95.  
  96. // all text on the spinner
  97. ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(),
  98. android.R.layout.simple_spinner_item, new String[]{allText});
  99. setAdapter(adapter);
  100. }
  101.  
  102. public interface MultiSpinnerListener {
  103. public void onItemsSelected(boolean[] selected);
  104. }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement