Android基础知识学习- spinner使用

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

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值