一手遮天 Android - view(选择类): Spinner 通过 ArrayAdapter 显示数据

项目地址 https://github.com/webabcd/AndroidDemo
作者 webabcd

一手遮天 Android - view(选择类): Spinner 通过 ArrayAdapter 显示数据

示例如下:

/view/selection/SpinnerDemo3.java

/**
 * Spinner - 列表选择框控件(演示如何通过 ArrayAdapter 显示数据)
 */

package com.webabcd.androiddemo.view.selection;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

import com.webabcd.androiddemo.R;

public class SpinnerDemo3 extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

    private Spinner mSpinner1;
    private Spinner mSpinner2;

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

        mSpinner1 = findViewById(R.id.spinner1);
        mSpinner2 = findViewById(R.id.spinner2);

        // 选择项发生变化时触发的事件(注:第一次加载时也会触发此事件)
        mSpinner1.setOnItemSelectedListener(this);
        mSpinner2.setOnItemSelectedListener(this);

        sample();
    }

    private void sample() {
        // 通过指定的数组资源(需要显示的数据)和项模板(需要显示的样式)创建 ArrayAdapter
        // ArrayAdapter - 数组适配器(另外还有 SimpleAdapter, BaseAdapter 自定义适配器)
        //     数据来自指定的数组资源
        //     项模板为 simple_list_item_1(另外还有其他很多系统内置项模板,不一一列列举了,因为实际最常用的还是自定义项模板)
        ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(this, R.array.arrayCountry, android.R.layout.simple_list_item_1 );
        mSpinner1.setAdapter(adapter2);

        // 通过指定的项模板(需要显示的样式)和数组(需要显示的数据)创建 ArrayAdapter
        //     项模板为自定义的 res/layout/item_view_selection_spinnerdemo3.xml
        //     数据来自指定的数组
        String[] arrayData = {"中国", "美国", "日本"};
        ArrayAdapter<String> adapter3 = new ArrayAdapter<>(this,R.layout.item_view_selection_spinnerdemo3, arrayData);
        mSpinner2.setAdapter(adapter3);
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        // parent 就是 ListView
        // view 就是被点击的 item
        // position 就是被点击的 item 的索引位置
        if (parent.getId() == R.id.spinner1) {
            Toast.makeText(this, String.format("spinner1 click position:%d", position), Toast.LENGTH_SHORT).show();
        }
        else if (parent.getId() == R.id.spinner2) {
            Toast.makeText(this, String.format("spinner2 click position:%d", position), Toast.LENGTH_SHORT).show();
        }
    }

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

    }
}

/layout/activity_view_selection_spinnerdemo3.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Spinner
        android:id="@+id/spinner2"
        android:layout_width="200dp"
        android:layout_height="wrap_content" />

</LinearLayout>

/layout/item_view_selection_spinnerdemo3.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:textColor="#0000ff"
    android:textSize="24dp" />

项目地址 https://github.com/webabcd/AndroidDemo
作者 webabcd

posted @ 2021-05-31 13:11  webabcd  阅读(78)  评论(0编辑  收藏  举报