【问题标题】:How to show radio button when click on spinner in android?单击android中的微调器时如何显示单选按钮?
【发布时间】:2021-04-08 17:20:05
【问题描述】:

我正在开发一个 android 项目,我想用单选按钮显示微调器数据,请建议我该怎么做。这是我的代码

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);

【问题讨论】:

  • 为其创建自定义布局而不是默认布局

标签: android android-layout arraylist android-spinner


【解决方案1】:

您只需要在微调器适配器的下拉列表中添加 android 布局 select_dialog_singlechoice,例如:..

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

【讨论】:

  • 这是完美的答案。在旧版本的 Android 中,单选按钮是 android.R.layout.simple_spinner_dropdown_item 的一部分,但它不再是。 android.R.layout.select_dialog_singlechoice 就是答案。对于那些使用自定义布局的人,只需添加android:checkMark="?android:attr/listChoiceIndicatorSingle"android:gravity="center_vertical"(这会使单选按钮与文本对齐)。
【解决方案2】:

字符串.xml

    <?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">AndroidSpinnerExample</string>
    <string name="spinner_title">Select Category</string>
</resources>

XML

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

    <!-- Text Label -->
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dip"
        android:text="Category:"
        android:layout_marginBottom="5dp"
    />

    <!-- Spinner Element -->
    <Spinner
        android:id="@+id/spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:prompt="@string/spinner_title"
    />
</LinearLayout>

JAVA代码

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;

public class AndroidSpinnerExampleActivity extends Activity implements OnItemSelectedListener{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Spinner element
        Spinner spinner = (Spinner) findViewById(R.id.spinner);

        // Spinner click listener
        spinner.setOnItemSelectedListener(this);

        // Spinner Drop down elements
        List&lt;String&gt; categories = new ArrayList&lt;String&gt;();
        categories.add("Automobile");
        categories.add("Business Services");
        categories.add("Computers");
        categories.add("Education");
        categories.add("Personal");
        categories.add("Travel");

        // Creating adapter for spinner
        ArrayAdapter&lt;String&gt; dataAdapter = new ArrayAdapter&lt;String&gt;(this, android.R.layout.simple_spinner_item, categories);

        // Drop down layout style - list view with radio button
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        // attaching data adapter to spinner
        spinner.setAdapter(dataAdapter);
    }

    @Override
    public void onItemSelected(AdapterView&lt;?&gt; parent, View view, int position, long id) {
        // On selecting a spinner item
        String item = parent.getItemAtPosition(position).toString();

        // Showing selected spinner item
        Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();

    }

    public void onNothingSelected(AdapterView&lt;?&gt; arg0) {
        // TODO Auto-generated method stub

    }

}

输出

【讨论】:

  • 感谢您的帮助,但我想要微调器列表中的单选按钮?有可能吗?
  • 您尝试过我的回答吗?你得到什么输出?
  • 这段代码是什么意思。列表<字符串>类别 = 新的 ArrayList();
  • 我试过了,但我的输出是一个简单的列表。没有单选按钮
  • 这适用于 Android 上的旧版本,但对于当前版本(我在 7.1.2 上测试),您需要使用setDropDownViewResource(android.R.layout.select_dialog_singlechoice),如上述答案中所述。
【解决方案3】:
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>

【讨论】:

    猜你喜欢
    • 2016-12-26
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 2012-08-29
    • 2014-11-11
    相关资源
    最近更新 更多