• Android基本控件Spinner的简单使用【转】


    Android基本控件Spinner的简单使用

    感谢大佬:https://blog.csdn.net/bingocoder/article/details/80469939

    学习过了Textview,EditText,ImageView,Button 等简单View控件后,刚一看Spinner感觉有些复杂。显示数据还需要用Adapter。。。认真学习后做简单梳理 :
    在这里插入图片描述
    在这里插入图片描述
    上面两个图介绍了Spinner显示数据的过程。是MVC模式。Spinner负责显示,Adapter负责将源数据传送到Spinner,Model存放源数据,通常是List<?>集合或者数组。

    看实际使用的例子

    1.准备需要加载展示的数据源。我定义在了valuesStrings.xml中,代码如下:

    <resources>
        <string name="app_name">LoginDemo</string>
        <string-array name="log_method">
            <item>QQ登陆</item>
            <item>微信登陆</item>
            <item>手机号登陆</item>
            <item>微博登陆</item>
        </string-array>
    </resources>
    

    2.初始化适配器,将数据源加载到适配器中。new 一个适配器是有三个参数,了解一下含义:

    context: 上下文对象,当前类.this。resource:表示列表item的布局资源id 默认android.R.layout.simple_spinner_item,logmethod。object:要适配的数据资源。

    3.将适配器加载到控件中:

    import android.app.Activity;
    import android.support.v7.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.AdapterView.OnItemSelectedListener;
    import android.widget.TextView;
    import android.widget.Toast;
     
    public class LoginActivity extends Activity {
        private Spinner mSp1;
        private String [] logmethod;
        private ArrayAdapter<String> adapter;
        private TextView mTv1;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);
            mSp1 = (Spinner)this.findViewById(R.id.sp);
            mTv1 = (TextView) this.findViewById(R.id.tv);
            //准备要加载的字符串数组资源
            logmethod = getResources().getStringArray(R.array.log_method);
            /*
            * 初始化适配器时各参数
            * context: 上下文对象,当前类.this
            * resource:表示列表item的布局资源id 默认android.R.layout.simple_spinner_item,logmethod
            * object:要适配的数据资源
            * */
            adapter = new ArrayAdapter<String>(LoginActivity.this,android.R.layout.simple_spinner_item,logmethod);
            mSp1.setAdapter(adapter);
            mSp1.setOnItemSelectedListener(new OnItemSelectedListener() {
                /*
                参数详解:
                AdapterView<?> adapterView:触发当前事件的Spinner对象
                View view表示当前备选中的item
                int i:表示当前被选中item的下表
                long l:表示当前被选中item的id
                 */
     
                @Override
                public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
                    String s1 = logmethod[position]; //在数据源中获取
                    String s2 = adapter.getItem(position); //在适配器中获取
                    Toast.makeText(LoginActivity.this,"s1 = "+s1,Toast.LENGTH_LONG);
                    mTv1.setText(s1);
                }
     
                @Override
                public void onNothingSelected(AdapterView<?> adapterView) {
                }
            });
        }
    }
    
    

    Spinner的定义:

    <Spinner
                android:id="@+id/sp"
                android:layout_marginLeft="10dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                ></Spinner>
    

    程序运行效果:
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    用js获取当前页面的url
    innerHTML 和 innertext 以及 outerHTML
    scrollWidth,clientWidth与offsetWidth的区别
    top、postop、scrolltop、offsetTop、scrollHeight、offsetHeight、clientHeight
    两个文字向上滚动案列
    mysql 经典案例
    学习笔记11
    顺时针打印矩阵
    重建二叉树
    镜像二叉树
  • 原文地址:https://www.cnblogs.com/tfxz/p/12621698.html
Copyright © 2020-2023  润新知