Spinner with checkbox items, is it possible?

前端 未结 6 1191
南笙
南笙 2020-12-06 06:48

Spinner with checkbox items, is it possible?

6条回答
  •  一个人的身影
    2020-12-06 07:32

    Try this

     
    

    Spinner1Activity.java

        package selva.spinner;
    
        import java.util.ArrayList;
        import java.util.List;
        import selva.spinner.multispinner.multispinnerListener;
        import android.app.Activity;
        import android.os.Bundle;
    
        public class Spinner1Activity extends Activity  implements multispinnerListener
        {
    
         @Override
         public void onCreate(Bundle savedInstanceState)
        {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        multispinner ms = (multispinner) findViewById(R.id.multi_spinner);
        List list = new ArrayList();
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        list.add("six");
        list.add("seven");
        list.add("eight");
        list.add("nine");
        list.add("ten");
        ms.setItems(list, "select", this);
    
      }
    
    @Override
    public void onItemschecked(boolean[] checked)
    {
        // TODO Auto-generated method stub
    
    }
    }
    

    multispinner.java

     package selva.spinner;
    
     import java.util.List;
     import android.app.AlertDialog;
     import android.content.Context;
     import android.content.DialogInterface;
     import android.content.DialogInterface.OnCancelListener;
     import android.content.DialogInterface.OnMultiChoiceClickListener;
     import android.util.AttributeSet;
     import android.widget.ArrayAdapter;
     import android.widget.Spinner;
    
    
    public class multispinner extends Spinner implements
    OnMultiChoiceClickListener, OnCancelListener 
    {
          private List listitems;
          private boolean[] checked;
    
          public multispinner(Context context) 
          {
              super(context);
          }
    
          public multispinner(Context arg0, AttributeSet arg1)
          {
              super(arg0, arg1);
          }
    
          public multispinner(Context arg0, AttributeSet arg1, int arg2) 
          {
              super(arg0, arg1, arg2);
          }
    
          @Override
          public void onClick(DialogInterface dialog, int ans, boolean isChecked)
          {
              if (isChecked)
                  checked[ans] = true;
              else
                  checked[ans] = false;
          }
    
    
        @Override
          public void onCancel(DialogInterface dialog)
          {
    
            String str="Selected values are: ";
    
                for (int i = 0; i < listitems.size(); i++)
                {
                            if (checked[i] == true)
                            {
                            str=str+"   "+listitems.get(i);
                            }
    
                }
    
                    AlertDialog.Builder alert1 = new AlertDialog.Builder(getContext());
    
                    alert1.setTitle("Items:");
    
                    alert1.setMessage(str);
    
                    alert1.setPositiveButton("Ok", null);
    
                    alert1.show();
    
    
          }
    
          @Override
          public boolean performClick()
          {
              AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
              builder.setMultiChoiceItems(
                        listitems.toArray(new CharSequence[listitems.size()]), checked, this);
              builder.setPositiveButton("done",
                      new DialogInterface.OnClickListener()
              {
    
                  @Override
                  public void onClick(DialogInterface dialog, int which)
                  {
                      dialog.cancel();
                  }
              });
              builder.setOnCancelListener(this);
              builder.show();
              return true;
          }
    
          public void setItems(List items, String allText,
                  multispinnerListener listener)
          {
              this.listitems = items;
    
              checked = new boolean[items.size()];
              for (int i = 0; i < checked.length; i++)
                  checked[i] =false;
    
    
              ArrayAdapter adapter = new ArrayAdapter(getContext(),
                      android.R.layout.simple_spinner_item, new String[] { allText });
              setAdapter(adapter);
            }
    
          public interface multispinnerListener 
          {
              public void onItemschecked(boolean[] checked);
          }
    
     }
    

提交回复
热议问题