Spinner控件的使用(设置下拉列表)

Spinner是下拉列表控件,如同ListView一样,需要适配器把数据转化成能在界面布局中显示的形式,其实大部分相同。有意思的是他会需要多设置一下,哪一部分呢?Spinner总共分成两部分,一部分是已经显示的部分,还有一部分是下拉列表。两种的显示都可以自定义,下面为大家展示一下代码:

第一步:定义带有Spinner控件的布局




    

    


第二步:使用系统提供的ArrayList类创建Adapter,然后用Spinner显示。并且检测行点击,当点击时显示点击内容。代码如下:

package cn.edu.qtech.csc.lcb.spinnerdemo;

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.TextView;
import android.widget.Toast;

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

public class MainActivity extends Activity {

    //定义控件变量
    private Spinner sp;
    private TextView info;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        sp=(Spinner)findViewById(R.id.sp1);
        info=(TextView)findViewById(R.id.txtInfo);

        //填充底层数据
        List data=new ArrayList();
        data.add("春天");
        data.add("夏天");
        data.add("秋天");
        data.add("冬天");

        //建立Adapter对象
        ArrayAdapter adapter=new ArrayAdapter(this,
            android.R.layout.simple_spinner_item,  //使用系统预先定义的布局
//       		R.layout.myitem, //对Spinner文本框使用自定义的布局
            data);

        //设置下拉框的布局
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//        adapter.setDropDownViewResource(R.layout.myitem); //弹出的浮动菜单使用自定义布局

        //设置Spinner的适配器对象
        sp.setAdapter(adapter);

        //设置默认选项
        sp.setSelection(2);

        //添加点击选择的监听器
        //view--点击的行对应的View(TextView)
        //position--点击选择的行号
        sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView parent, View view, int position, long id) {
                String s=((TextView)view).getText().toString();
                Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
                info.setText("选中: "+s);
            }

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

    }
}

大家可以看到用//注释掉的两行代码,这两行是分别为当前显示的内容和下拉列表里的内容设置布局。布局代码如下:



大家有没有发现一个问题,在我的ListView中,ArrayAdapter中使用自定义布局一共有四个参数,而在这里有三个参数,缺了一个id参数。为什么呢?答案在这里:

如果布局里面只有一个textview,就不要加ID参数,否则,如果布局是线性布局之类的容器,就必须加ID参数。

也就是说,对于我们这个系统默认的限制布局,我们是不需要id参数的。

下面看一下运行结果,分别是全用系统,单个自定义,全部自定义:

Spinner控件的使用(设置下拉列表)_第1张图片         Spinner控件的使用(设置下拉列表)_第2张图片           Spinner控件的使用(设置下拉列表)_第3张图片

源码连接:https://download.csdn.net/download/qq_38367681/10778203

你可能感兴趣的:(Android开发技术)