Multi selección spinner en Android sin AlertDialog

Quiero lo mismo que este enlace https://www.gorecess.com/ first spinner. multi selección spinner en Android con checkbox. Mostrar el spinner en menú desplegable. Alguien sabe responder …

Tengo algunos enlaces que puede consultar para hacer ese tipo de vista

sigue estos enlaces

Lista desplegable de selección múltiple en Android

Spinner con selección múltiple en Android

Cómo personalizar Spinner en Android

Esto puede ayudarte

MultiSelectionSpinner

 MultiSelectionSpinner spinner=(MultiSelectionSpinner)findViewById(R.id.input1); List list = new ArrayList(); list.add("List1"); list.add("List2"); spinner.setItems(list); 

Para obtener más información, haga clic aquí

multi selección spinner:

1- crea un spinner en tu propio xml, como este

   

2-crea un dapter personalizado para spinner como este:

 public class AdapterTagSpinnerItem extends ArrayAdapter { private LayoutInflater mInflater; private List listState; public Spinner mySpinner = null; public AdapterTagSpinnerItem(Context context, int resource, List objects, Spinner mySpinner) { super(context, resource, objects); this.listState = objects; this.mySpinner = mySpinner; mInflater = LayoutInflater.from(context); } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { return getCustomView(position, convertView, parent); } @Override public View getView(int position, View convertView, ViewGroup parent) { return getCustomView(position, convertView, parent); } public View getCustomView(final int position, View convertView, ViewGroup parent) { String text = ""; final ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); mInflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = mInflater.inflate(R.layout.spinner_item, null, false); holder.mTextView = convertView.findViewById(R.id.tvSpinnerItem); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } /** * check position , if position is zero we put space on top of list of spinner */ if ((position == 0)) text = oneSpace; /** * check position , if position is one we put cross mark before text to show that position used to be for clear all selected items on spinner */ else if ((position == 1)) text = " " + String.valueOf((char) crossMarkAroundBox) + " " + listState.get(position).getTagText(); /** * check position , if position is two we put check mark before text to show that position used to be for select all items on spinner */ else if ((position == 2)) text = " " + String.valueOf((char) tikMarkAroundBox) + " " + listState.get(position).getTagText(); /** * check position , if position is bigger than two we have to check that position is selected before or not and put check mark or dash before text */ else { if (listState.get(position).isSelected()) { text = " " + String.valueOf((char) tikMark) + " " + listState.get(position).getTagText(); } else { text = " " + String.valueOf(dash) + " " + listState.get(position).getTagText(); } } holder.mTextView.setText(text); holder.mTextView.setTag(position); holder.mTextView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { /** * if you want open spinner after click on text for first time we have to open spinner programmatically */ mySpinner.performClick(); int getPosition = (Integer) v.getTag(); listState.get(getPosition).setSelected(!listState.get(getPosition).isSelected()); notifyDataSetChanged(); /** * if clicked position is one * that means you want clear all select item in list */ if (getPosition == 1) { clearList(); } /** * if clicked position is two * that means you want select all item in list */ else if (getPosition == 2) { fillList(); } } }); return convertView; } /** * clear all items in list */ public void clearList() { for (TagListSimpleSearch items : listState) { items.setSelected(false); } notifyDataSetChanged(); } /** * select all items in list */ public void fillList() { for (TagListSimpleSearch items : listState) { items.setSelected(true); } notifyDataSetChanged(); } /** * view holder */ private class ViewHolder { private TextView mTextView; } } 

3- ahora tienes que crear un objeto para el adaptador

 public class TagListSimpleSearch { private String TagId; private String TagText; private boolean selected; public String getTagId() { return TagId; } public void setTagId(String TagId) { this.TagId = TagId; } public String getTagText() { return TagText; } public void setTagText(String tagText) { TagText = tagText; } public boolean isSelected() { return selected; } public void setSelected(boolean selected) { this.selected = selected; } } 

Adaptador giratorio de 4 rellenos en su actividad

 public static String oneSpace =" "; public static int tikMark =0X2714; public static int crossMark =0X2715; public static int tikMarkAroundBox =0X2611; public static int crossMarkAroundBox =0X274E; public static String dash ="-"; private Spinner mySpinner; mySpinner= (Spinner) findViewById(R.id.mySpinner); List tagsNames = new ArrayList<>(); TagListSimpleSearch tagSpecific=new TagListSimpleSearch(); tagSpecific.setTagId("0"); tagSpecific.setTagText(oneSpace); tagsNames.add(tagSpecific); tagSpecific=new TagListSimpleSearch(); tagSpecific.setTagId("1"); tagSpecific.setTagText("select All Items"); tagsNames.add(tagSpecific); tagSpecific=new TagListSimpleSearch(); tagSpecific.setTagId("2"); tagSpecific.setTagText("remove All Items"); tagsNames.add(tagSpecific); tagSpecific=new TagListSimpleSearch(); tagSpecific.setTagId("0"); tagSpecific.setTagText("Item 0"); tagsNames.add(tagSpecific); tagSpecific=new TagListSimpleSearch(); tagSpecific.setTagId("1"); tagSpecific.setTagText("Item 1"); tagsNames.add(tagSpecific); tagSpecific=new TagListSimpleSearch(); tagSpecific.setTagId("2"); tagSpecific.setTagText("Item 2"); tagsNames.add(tagSpecific); tagSpecific=new TagListSimpleSearch(); tagSpecific.setTagId("3"); tagSpecific.setTagText("Item 3"); tagsNames.add(tagSpecific); final AdapterTagSpinnerItem adapterTagSpinnerItem = new AdapterTagSpinnerItem(this, 0, tagsNames,mySpinner); mySpinner.setAdapter(adapterTagSpinnerItem); 
    Intereting Posts