Android基础知识学习- spinner使用

一、布局文件中的Spinner

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:orientation="vertical"
        android:gravity="center_vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@android:color/black"
            android:textSize="20sp"
            android:text="请选择您的职业?"
            />

        <Spinner
            android:id="@+id/spinner_job"
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:spinnerMode="dropdown"
            />

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#90909090" />

    </LinearLayout>

在布局文件中定义Spinner很简单,它一个重要的属性是spinnerMode,它有2种情况

(1)为dropdown时,表示Spinner的数据下拉展示

(2)为dialog时,表示Spinner的数据为弹窗展示

二、Spinner使用静态数据

1.准备数据

在value文件夹下string.xml的resources标签下加入以下内容,注意name这个属性,后面需要使用

    <string-array name="spinner_list">
        <item>请选择</item>
        <item>测试工程师</item>
        <item>产品工程师</item>
        <item>开发工程师</item>
        <item>设计工程师</item>
        <item>运维工程师</item>
    </string-array>

2.代码读取数据加载

public class WebFragment extends Fragment{
    private Spinner spinner_job;
    private ArrayAdapter<CharSequence> job_adapter;
    public WebFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(ymxh.main.R.layout.fragment_web, container, false);
        spinner_job = view.findViewById(R.id.spinner_job);
        job_adapter = ArrayAdapter.createFromResource(getContext(),R.array.spinner_list,android.R.layout.simple_spinner_item);

        job_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner_job.setAdapter(job_adapter);
        spinner_job.setSelection(0);

        spinner_button.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){

            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                spinner_button.setSelection(i);
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
                spinner_button.setSelection(0);
            }
        });


        return view;
    }
}

自己编写的App是在Fragment中使用的,跟在Activity中一样的

job_adapter = ArrayAdapter.createFromResource(getContext(),R.array.spinner_list,android.R.layout.simple_spinner_item);

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

主要核心的代码就是这两行代码,使用适配器方法createFromResource读取数据,第一个参数是context上下文,第二个参数是在xml文件中配置数据的string-array的name名字,第三个参数是item数据项的格式,使用的是系统默认最简单的。setDropDownViewResource方法是设置下拉菜单样式使用默认的spinner下拉菜单样式(可以使用自定义的Layout布局)

      

三、使用适配器添加数据

上面使用数据文件管理数据的方法在实际开发中并不实用,在实际开发中数据更多的是来自数据库或者接口请求得到,这样的数据是动态性的可以保持灵活。下面使用List集合配合适配器实现下拉菜单

1.布局文件

在上面案例的布局文件中增加了一个spinner控件

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:orientation="vertical"
        android:gravity="center_vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@android:color/black"
            android:textSize="20sp"
            android:text="请选择您喜欢的编程语言?"
            />

        <Spinner
            android:id="@+id/spinner_language"
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:spinnerMode="dialog"
             />

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#90909090" />

    </LinearLayout>

2.准备List数据集合

   //数据
        List<String> data_list = new ArrayList<String>();
        data_list.add("请选择");
        data_list.add("Java");
        data_list.add("Python");
        data_list.add("C语言");
        data_list.add("C++");
        data_list.add("C#");
        data_list.add("JavaScript");
        data_list.add("VBScript");
        data_list.add("Ruby");
        data_list.add("Rust");
        data_list.add("PHP");
        data_list.add("Go");
        data_list.add("Perl");
        data_list.add("TypeScript");
        data_list.add("Lisp");

3.把数据载入适配器

public class WebFragment extends Fragment{
    private Spinner spinner_language;
    private ArrayAdapter<CharSequence> job_adapter;
    public WebFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(ymxh.main.R.layout.fragment_web, container, false);
        spinner_language = view.findViewById(R.id.spinner_language);
             
        //数据
        data_list = new ArrayList<String>();
        data_list.add("请选择");
        data_list.add("Java");
        data_list.add("Python");
        data_list.add("C语言");
        data_list.add("C++");
        data_list.add("C#");
        data_list.add("JavaScript");
        data_list.add("VBScript");
        data_list.add("Ruby");
        data_list.add("Rust");
        data_list.add("PHP");
        data_list.add("Go");
        data_list.add("Perl");
        data_list.add("TypeScript");
        data_list.add("Lisp");

        //适配器
        arr_adapter= new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_item, data_list);
        //设置样式
        arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        //加载适配器
        spinner_language.setAdapter(arr_adapter);
        spinner_language.setSelection(0);

        spinner_language.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){

            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                spinner_language.setSelection(i);
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
                spinner_language.setSelection(0);
            }
        });

        return view;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android的系统架构 6 一、应用程序 6 二、应用程序框架 6 三、Android Runtime 7 四、系统库 7 五、Linux 内核 8 Webkit浏览器引擎简介 9 Dalvik虚拟机简介 11 什么是Dalvik虚拟机 11 Dalvik和Android系统 11 Dalvik虚拟机的主要特征 12 Android应用开发和Dalvik虚拟机 15 Activity生命周期 16 一、Activity栈 16 二、Activity的4种状态 16 三、Activity的生命周期 17 四、实例说明 18 Android控件的继承关系 22 一、View与ViewGroup关系 22 二、各控件的继承关系 23 界面布局 25 LinearLayout(线性布局) 25 TableLayout(表格布局) 28 RelativeLayout(相对布局) 31 AbsoluteLayout(绝对布局) 34 FrameLayout(框架布局) 34 Toast 36 Notification 38 对话框 42 一、带三个按钮的对话框 42 二、简单列表对话框、单选列表对话框、多选列表对话框 44 三、水平进度对话框和圆形进度对话框 47 四、自定义对话框 49 Menu菜单 52 选项菜单 52 上下文菜单 53 三、子菜单 54 4种响应菜单项单击事件的方式 56 显示和编辑文本的控件 57 TextView 57 CheckedTextView 60 EditText 60 ExtraEditText 61 AutoComplteteTextView、MultiAutoCompleteTextView (自动完成输入内容) 61 Button 63 ImageButton 65 ZoomButton 65 日期和时间控件 66 DatePicker、TimePicker 66 AnalogClock、DigitalClock 68 单选框、复选框、开关状态按钮 69 单项选择(RadioGroup、RadioButton) 69 复选框(CheckBox) 71 开关状态按钮(ToggleButton) 73 下拉列表框Spinner 74 ScrollView、HorizontalScrollView 77 垂直滚动(ScrollView) 77 水平滚动(HorizontalScrollView) 78 两个方向均可滚动 78 TabHost 79 ProgressBar、SeekBar、RatingBar 81 进度条(ProgressBar) 81 拖动条(SeekBar) 83 评分组件(RatingBar) 86 GridView、Gallery和ImageSwitcher 88 GridView 88 Gallery和ImageSwitcher 91 ListView 94 一、普通的ListView 94 可以单选和多选的ListView 95 使用SimpleAdapter建立复杂的列表项 97 自定义Adapter来建立复杂的列表项 99 动态添加、删除ListView列表项 102 改变ListView列表项选中状态的背景颜色 102 可展开的列表组件 102 数据的存取 103 SharePreferences 6.1 103 文件的存储6.2 103 SQLite数据库6.4 103 ContentProvider、ContentResolver 6.5 105 Intent 106 用Intent启动Activity,并在Activity之间传递数据 106 调用其他应用程序中的Activity(打电话、浏览网页、发Email等) 109 接收和发送广播 113 接收系统广播 113 在自己的应用程序中发送广播 117 Android服务 118 系统服务 8.2 118 时间服务 8.3 118 跨进程访问 8.4 118 网络 119 图形、音频、视频 120 图形 10.1 120 音频、视频 10.2 120 2D动画 121 帧动画 121 补间动画 121 OpenGL ES编程 122 Android支持的各种资源 123 窗口小部件(App Widget) 124 NDK编程 125

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值