zoukankan      html  css  js  c++  java
  • Android-Spinner下拉列表

    在布局Layout文件中定义Spinner:

    <?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 -->
        <Spinner
            android:id="@+id/spinner"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"></Spinner>
    
    </LinearLayout>


    设置数据方面,可以把Spinner下拉列表控件想象成ListView

    绑定数据与监听的代码:

    package liudeli.ui.all;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.Spinner;
    import android.widget.SpinnerAdapter;
    import android.widget.Toast;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class SpinnerActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_spinner);
    
            Spinner spinner = findViewById(R.id.spinner);
    
            // 组装数据
            final List<String> data = new ArrayList<>();
            for (int i=0; i< 30; i++) {
                data.add("下拉列表控件Spinner" + i);
           }
    
            SpinnerAdapter spinnerAdapter = new ArrayAdapter<String>(this,
                                                                     android.R.layout.simple_list_item_1,
                                                                     android.R.id.text1,
                                                                     data);
            // 设置数据方面,可以把Spinner下拉列表控件想象成ListView
            spinner.setAdapter(spinnerAdapter);
    
            // 给Spinner设置监听
            spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    
                /**
                 * 选择条目Item会调用此方法
                 * @param parent
                 * @param view
                 * @param position
                 * @param id
                 */
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    alertToast(data.get(position));
                }
    
                @Override
                public void onNothingSelected(AdapterView<?> parent) {
                    /**
                     * 这个一直没有触发,我也不知道什么时候被触发。
                     * 在官方的文档上说明,为back的时候触发,但是无效,可能需要特定的场景
                     */
                    alertToast("onNothingSelected 这个方法从未调用过,实际作用不大");
                }
            });
        }
    
        private void alertToast(String text) {
            Toast.makeText(this, text, Toast.LENGTH_LONG).show();
        }
    }

    效果:

  • 相关阅读:
    LeeCode 1497. 检查数组对是否可以被 k 整除
    LeetCode 1503. 所有蚂蚁掉下来前的最后一刻
    双指针算法
    最短送餐路程计算, 美团笔试题2020
    最短路算法dijkstra算法
    寻找最小子字符串, 美团笔试题2020
    最大矩形, 统计全1子矩阵
    拼凑硬币, 腾讯
    7月15日
    7月14日
  • 原文地址:https://www.cnblogs.com/android-deli/p/10099702.html
Copyright © 2011-2022 走看看