Android基础知识学习- spinner使用

android基础开发中spinner控件作为基础控件之一比较常见,下面简单记录下它的使用:

一、布局文件中的Spinner

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

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

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

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

   

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

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

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

二、Spinner使用静态数据

1.准备数据

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

   
        请选择
        测试工程师
        产品工程师
        开发工程师
        设计工程师
        运维工程师
   

2.代码读取数据加载

public class WebFragment extends Fragment{
    private Spinner spinner_job;
    private ArrayAdapter 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布局)

Android基础知识学习- spinner使用_第1张图片      Android基础知识学习- spinner使用_第2张图片

三、使用适配器添加数据

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

1.布局文件

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

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

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

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

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

   

2.准备List数据集合

   //数据
        List data_list = new ArrayList();
        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 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();
        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(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;
    }
}

Android基础知识学习- spinner使用_第3张图片

你可能感兴趣的:(Android,Android基础知识学习)