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.准备需要加载展示的数据源。我定义在了values\Strings.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>

程序运行效果:



Android基本控件Spinner的简单使用【转】的更多相关文章

  1. Android:控件Spinner实现下拉列表

    在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉列表,在其中每个下拉列表项使用<option>表示即可.这是在Web开发中一个必不可少的交 ...

  2. 【转】Android:控件Spinner实现下拉列表

    原文网址:http://www.cnblogs.com/tinyphp/p/3858920.html 在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉 ...

  3. Android常用控件

     Android 中使用各种控件(View) DatePicker - 日期选择控件 TimePicker - 时间选择控件 ToggleButton - 双状态按钮控件 EditText - 可编辑 ...

  4. android 基础控件(EditView、SeekBar等)的属性及使用方法

        android提供了大量的UI控件,本文将介绍TextView.ImageView.Button.EditView.ProgressBar.SeekBar.ScrollView.WebView ...

  5. Android基本控件之Menus

    在我们的手机中有很多样式的菜单,比如:我们的短信界面,每条短信,我们长按都会出现一个菜单,还有很多的种类.那么现在,我们就来详细的讨论一下安卓中的菜单 Android的控件中就有这么一个,叫做Menu ...

  6. 矩阵, 矩阵 , Android基础控件之ImageView

    天下文章大家抄,以下所有内容,有来自copy,有来自查询,亦有自己的总结(目的是总结出自己的东西),所以说原创,不合适,说是转载也不恰当,所以我称之为笔记,可惜没有此分类选项,姑且不要脸一点,选择为原 ...

  7. 【Android开发日记】之入门篇(十三)——Android的控件解析

    Android的控件都派生自android.view.View类,在android.widget包中定义了大量的系统控件供开发者使用,开发者也可以从View类及其子类中,派生出自定义的控件. 一.An ...

  8. Android圆环控件

    Android圆环控件 近期在做一个功能.界面效果要求例如以下: 看到这个界面,我首先想到了曾经在做phone模块的时候,我们定制的来电界面InCallTouchUi,界面效果是相似的. 来电控件使用 ...

  9. 一个Demo让你掌握Android所有控件

    原文:一个Demo让你掌握Android所有控件 本文是转载收藏,侵删,出处:"安卓巴士"      下面给出实现各个组件的源代码: 1.下拉框实现--Spinner packag ...

随机推荐

  1. Chapter 12 IP Weighting and Marginal Structural Model

    目录 12.1 The causal question 12.2 Estimating IP weights via modeling 12.3 Stabilized IP weights 12.4 ...

  2. 使用 Android Studio 开发工具创建一个 Android 应用程序,并在 Genymotion 模拟器上运行

    需求说明: 使用 Android Studio 开发工具创建一个 Android 应用程序,并在 Genymotion 模拟器上运行 实现步骤: 打开 Android Studio,创建一个 Andr ...

  3. 编写Java程序,使用菜单组件制作一个记事本编辑器

    返回本章节 返回作业目录 需求说明: 使用菜单组件制作一个记事本编辑器 实现思路: 创建记事本菜单工具栏JMenuBar. 创建多个菜单条JMenu. 创建多个菜单项JMenuItem. 将菜单添加至 ...

  4. Java基础(八)——IO流5_其他流

    一.其他 1.System.in.System.out(标准输入.输出流) System.in:标准的输入流,默认从键盘输入. System.out:标准的输出流,默认从控制台输出. 改变标准输入输出 ...

  5. Unity3D开发入门教程(二)—— Lua入门

    五邑隐侠,本名关健昌,12年游戏生涯. 本教程以 Unity 3D + VS Code + C# + tolua 为例. 如果你还没有编程基础,建议你先学习一些编程基础.本文不是完全菜鸟教程,主要针对 ...

  6. for update未提交导致锁表

    select for update 是为了在查询时,避免其他用户以该表进行插入,修改或删除等操作,造成表的不一致性. 应用场景: 什么时候需要使用for update?就是那些需要业务层面数据独占时, ...

  7. Python3.7 比较两个Excel文件指定列的值的异同,并将核对结果写入Excel中(含升级版本)

    背景: 最近工作中需要核对客户的历史数据, 接近400个产品,需要核对的列有15列,行数有8000+行 肉眼核对简直要吐血 心想着反正在学python呢 人生苦短 何不用python写个脚本 帮助我核 ...

  8. python3实现阿里云发短信

    一.准备工作 1.安装阿里云SDK pip install aliyun-python-sdk-core-v3 2.新建签名并等待审核通过 审核通过后,记下**[签名名称](参数1)**,程序中会用到 ...

  9. AP原理与最终一致性 强一致性 弱一致性

    转载自:http://www.blogjava.net/hello-yun/archive/2012/04/27/376744.html https://blog.csdn.net/c28905453 ...

  10. 51 Nod 1006 最长公共子序列(LCS & DP)

    原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1006 题目分析: 首先先知道LCS问题,这有两种: Long ...