android spinner控件

本文详细介绍了Android中Spinner控件的使用方法,包括如何在布局文件中添加Spinner、定义数据源、设置点击事件及通过Java代码添加下拉列表菜单项等。此外还展示了Spinner与Adapter之间的交互方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android Spinner控件介绍

layout布局文件添加Spinner控件,如下:

<Spinner

   android:id="@+id/spinner1"

   android:layout_width="wrap_content"

   android:layout_height="wrap_content"

   android:entries="@array/languages"/>


其中android:entries="@array/languages"表示Spinner的数据集合是从资源数组languages中获取的,languages数组资源定义在values/arrays.xml中:

 

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

<resources>

   <string-array name="languages">

       <item>c语言</item>

       <item>java </item>

       <item>php</item>

       <item>xml</item>

       <item>html</item>

   </string-array>

</resources>


到此为止,已经完成了Spinner的显示,接下来添加点击事件。

为Spinner添加点击事件可以通过public void setOnItemSelectedListener(AdapterView.OnItemSelectedListener listener),但切记不可使用setOnItemClickListener方法,程序会产生错误。

public class SpinnerActivity extends Activity {
    private Spinner spinner;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spinner);
        spinner = (Spinner) findViewById(R.id.spinner);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String[] languages = getResources().getStringArray(R.array.languages);
                Toast.makeText(SpinnerActivity.this,  languages[position], Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
    }
}


也可以通过java代码添加下拉列表的菜单项。

1)java文件中为下拉列表添加一个适配器

ArrayAdapter adapter =  new ArrayAdapter(this, android.R.layout.simple_spinner_item, allcountries);

2)为adapter添加下拉列表下拉时的菜单样式。

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

3)将适配器添加到下拉列表Spinner上。

spinner.setAdapter(adapter);

4)为spinner添加点击事件,同上。


实例代码:

public class SpinnerActivity extends Activity {
    private Spinner spinner;
    private List<String> data_list;
    private ArrayAdapter<String> adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spinner);
        spinner = (Spinner) findViewById(R.id.spinner);

        //数据源
        data_list = new ArrayList<String>();
        data_list.add("java");
        data_list.add("c++");
        data_list.add("php");
        data_list.add("html");

        //适配器
        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data_list);
        //设置样式
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        //加载适配器
        spinner.setAdapter(adapter);

        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(SpinnerActivity.this,  data_list.get(position), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
    }
}

Spinner类介绍:

类继承关系如下:

Spinner extends AbsSpinner   

AbsSpinner  extends android.widget.AdapterView<android.widget.SpinnerAdapter>

AdapterView extends ViewGroup

ViewGroup extends View


常用方法:

1 public void setOnItemClickListener(AdapterView.OnItemClickListener l);
说明:A spinner 不支持 item click events. 调用这个方法将产生错误.取代的方法是public void setOnItemSelectedListener (AdapterView.OnItemSelectedListener listener);
public void setOnItemSelectedListener(AdapterView.OnItemSelectedListener listener);
说明:这个方法是父类AdapterView中的方法。注册一个回调方法,当AdapterView中一个条目选中时触发。
public void setAdapter (SpinnerAdapter adapter)


 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值