android基础组件---->Spinner的使用

  Spinner提供了一个快速的方式从集合中选择值。在默认状态下,一个Spinner显示的是当前选择的值。触摸Spinner会显示一个下拉菜单,用户可以从中选择一个值。今天我们就开始Spinner的学习。与灵魂作伴,让时间对峙荒凉,我无需对任何人交代。

Spinner的使用

项目结构如下:

在xml文件中定义一个spinner,如下:

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

在Spinner中增加一个选择列表,你需要在你的Activity或者Fragment代码中指定一个SpinnerAdapter。

在Spinner中增加一个选择列表

Spinner中的列表内容可以来自任何来源,但是需要一个SpinnerAdapter,比如如果选择内容是一个数组,那么Adapter是ArrayAdapter,再或者选择内容来自于数据库查询,那么Adapter是CursorAdapter。

例如如果选择内容是预先确定的,你可以在string的资源文件中指定一个array内容: spinner.xml。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="spinner_array">
        <item>Linux</item>
        <item>Huhx</item>
        <item>LiuLi</item>
        <item>ChenHui</item>
        <item>Android</item>
    </string-array>
</resources>

在Activity或者Fragment中提供一个ArrayAdapter的实例,如下:

spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.spinner_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

 createFromResource方法允许你从一个字符数组中创建一个ArrayAdapter。第二个参数是在资源文件中定义的数组,第三个参数是定义spinner选择的方式。simple_spinner_item.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1"
    style="?android:attr/spinnerItemStyle"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"
    android:textAlignment="inherit"/>

 然后你需要调用setDropDownViewResource方法去指定spinner列表中的布局:support_simple_spinner_dropdown_item.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@android:id/text1"
          style="?attr/spinnerDropDownItemStyle"
          android:singleLine="true"
          android:layout_width="match_parent"
          android:layout_height="?attr/dropdownListPreferredItemHeight"
          android:ellipsize="marquee"/>

响应用户选择spinner的事件

当用户在下拉菜单中选择一行,Spinner对象接收一个on-item-selected事件:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        if (view instanceof TextView) {
            Toast.makeText(MainActivity.this, ((TextView) view).getText().toString(), Toast.LENGTH_SHORT).show();
        }
        Log.i(TAG, "viewa: " + view + ", parent: " + parent + ", position: " + position + ", id: " + id);
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        Log.i(TAG, "on nothing selected");
    }
});

 运行效果如下:

友情链接

原文地址:https://www.cnblogs.com/huhx/p/baseuseandroidspinner.html