如何在Android中点击Spinner时显示单选按钮?

3
我正在进行一项安卓项目,我想展示带有单选按钮的下拉列表数据,请建议我如何实现。这是我的代码:
Spinner spinner = (Spinner) findViewById(R.id.sMonth);
spinner.setOnItemSelectedListener(this);
ArrayList categories=new ArrayList();
categories.add("Month");
categories.add("Jan");
categories.add("Feb");
categories.add("Mar");
categories.add("Apr");
categories.add("May");
categories.add("Jun");
categories.add("Jul");
categories.add("Aug");
categories.add("Sep");
categories.add("Oct");
categories.add("Nov");
categories.add("Dec");
ArrayAdapter dataAdapter=new ArrayAdapter(this,android.R.layout.simple_spinner_dropdown_item,categories);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(dataAdapter);

创建自定义布局,而不是默认布局。 - Vivek Mishra
2个回答

15

你只需要在下拉菜单的 Spinner 适配器中添加 Android 布局 select_dialog_singlechoice,就像这样:

adapter.setDropDownViewResource(android.R.layout.select_dialog_singlechoice);

2
这是完美的答案。在旧版本的Android中,单选按钮是android.R.layout.simple_spinner_dropdown_item的一部分,但现在不再是了。 android.R.layout.select_dialog_singlechoice才是正确的答案。对于那些使用自定义布局的人,只需添加android:checkMark="?android:attr/listChoiceIndicatorSingle"android:gravity="center_vertical"(使单选按钮与文本对齐)。 - Soren Stoutner

0
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;

public class MyAndroidAppActivity extends Activity {

  private Spinner spinner1, spinner2;
  private Button btnSubmit;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

addItemsOnSpinner2();
addListenerOnButton();
addListenerOnSpinnerItemSelection();
  }

  // add items into spinner dynamically
  public void addItemsOnSpinner2() {

    spinner2 = (Spinner) findViewById(R.id.spinner2);
    List<String> list = new ArrayList<String>();
    list.add("list 1");
    list.add("list 2");
    list.add("list 3");
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, list);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner2.setAdapter(dataAdapter);
  }

  public void addListenerOnSpinnerItemSelection() {
    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner1.setOnItemSelectedListener(new CustomOnItemSelectedListener());
  }

  // get the selected dropdown list value
  public void addListenerOnButton() {

    spinner1 = (Spinner) findViewById(R.id.spinner1);
    spinner2 = (Spinner) findViewById(R.id.spinner2);
    btnSubmit = (Button) findViewById(R.id.btnSubmit);

    btnSubmit.setOnClickListener(new OnClickListener() {

      @Override
      public void onClick(View v) {


      }

    });
  }
}

//CustomOnItemSelectedListener.java

import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Toast;

public class CustomOnItemSelectedListener implements OnItemSelectedListener    {

      public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {

  }

  @Override
   public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub
  }

}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Spinner
       android:id="@+id/spinner1"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:entries="@array/country_arrays"
       android:prompt="@string/country_prompt" />

    <Spinner
        android:id="@+id/spinner2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/btnSubmit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Submit" />

</LinearLayout>

//string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Yourapp</string>
    <string name="country_prompt">Choose a country</string>

    <string-array name="country_arrays">
        <item>Malaysia</item>
        <item>United States</item>
        <item>Indonesia</item>

    </string-array>

</resources>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接