Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
332 views
in Technique[技术] by (71.8m points)

android - Spinner with checkbox items, is it possible?

Spinner with checkbox items, is it possible?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Try this

 <selva.spinner.multispinner android:id="@+id/multi_spinner" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

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<String> list = new ArrayList<String>();
    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<String> 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<String> 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<String> adapter = new ArrayAdapter<String>(getContext(),
                  android.R.layout.simple_spinner_item, new String[] { allText });
          setAdapter(adapter);
        }

      public interface multispinnerListener 
      {
          public void onItemschecked(boolean[] checked);
      }

 }

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...