当前位置:首页 > 图片 > 时尚娱乐 > 正文
文章正文

android spinner动态数据 Android零基础入门|下拉框Spinner

图片 > 时尚娱乐 > :android spinner动态数据 Android零基础入门|下拉框Spinner是由美文导刊网(www.eorder.net.cn)为您精心收集,如果觉得好,请把这篇文章复制到您的博客或告诉您的朋友,以下是android spinner动态数据 Android零基础入门|下拉框Spinner的正文:

Android零基础入门|下拉框Spinner

上一期学习了GridView的使用,你已经掌握了吗?本期一起来学习Spinner的使用。

一、认识Spinner

Spinner其实就是一个列表选择框。不过Android的列表选择框并不需要显示下拉列表,而是相当于弹出一个菜单供用户选择。

Spinner 与 Gallery 都继承了AbsSpinner,AbsSpinner 继承了AdapterView,因此它也表现出AdapterView的特征:只要为AdapterView提供Adapter即可。

Spinner支持的常用XML属性及相关方法如下表所示。

如果开发者使用Spinner时己经可以确定列表选择框里的列表项,则完全不需要编写代码,只要为Spinner指定android:entries属性即可让Spinner正常工作;如果程序需要在运行时动态 地决定Spinner的列表项,或者程序需要对Spinner的列表项进行定制,则可使用Adapter为 Spinner提供列表项。

二、Spinner示例

接下来通过一个简单的示例程序来学习Spinner的使用方法。

继续使用WidgetSample工程的listviewsample模块,在app/main/res/layout/目录下创建spinner_layout.xml文件,在其中填充如下代码片段:

在res/values/目录下新建arrays.xml文件,定义professionals数组资源,如下:

接下来为Spinner提供Adapter。新建SpinnerActivity.java文件,加载上面新建的布局文件,具体代码如下:

上面的程序比较简单,主要为Spinner 设置了选中设置监听器。

修改程序启动的Activity,运行程序,可以看到下图所示界面效果。

点击第一个Spinner ,弹出选择对话框,如下图所示。选择其中一项回到主界面,发现Spinner 的值会改变为所选择的内容。

同理点击第二个Spinner ,打开下拉列表选项框,如下图所示。

Gallery与Spinner组件有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列表选择框。它们之间的区别在于,Spinner显示的是一个垂直的列表选择框,而Gallery显示的是一个水平的列表选择框。 Gallery与Spinner还有一个区别:Spinner的作用是供用户选择,而Gallery则允许用户通过拖动来查看上一个、下一个列表项。

Gallery本身的用法非常简单——基本上与Spinner的用法相似,只要为它提供一个内容 Adapter即可,该Adapter的getView()方法所返回的View将作为Gallery列表的列表项。如果程序需要监控到Gallery选择项的改变,通过为Gallery添加OnltemSelectedListener监听器即可实现。

Android已经不再推荐使用Gallery组件,而是推荐使用其他水平滚动组件,如HorizontalScrollView和ViewPager来代替Gallery组件,所以此处不做过多讲解。

今天就先到这里,如果有问题欢迎留言一起探讨,也欢迎加入Android零基础入门技术讨论微信群,共同成长!

此文章版权为微信公众号分享达人秀(ShareExpert)——鑫鱻所有,若需转载请联系作者授权,特此声明!

往期总结分享:

第1节:Android的前世今生

第2节:Android 系统架构和应用组件那些事

第3节:带你一起来聊一聊Android开发环境

第4节:正确安装和配置JDK

第5节:善用ADT Bundle

第6节:配置优化SDK Manager

第7节:搞定Android模拟器

第8节:HelloWorld,第一趟旅程出发点

第9节:Android实战,不懂代码也可以开发

第10节:开发IDE迎来Android Studio

第11节:运行Android Studio工程

第12节:熟悉Android Studio界面

第13节:Android Studio配置优化

第14节:使用高速Genymotion

第15节:掌握Android Studio项目结构

第16节:Android用户界面开发概述

第17节:TextView属性和方法大全

第18节:EditText的属性和使用方法

第19节:Button使用详解

第20节:CheckBox和RadioButton使用大全

第21节:ToggleButton和Switch使用大全

第22节:ImageView的属性和方法大全

第23节:ImageButton和ZoomButton使用

第24节:自定义View简单使用

第25节:简单且最常用的LinearLayout

第26节:layout_gravity和gravity大不同

第27节:正确使用padding和margin

第28节:轻松掌握RelativeLayout相对布局

第29节:善用TableLayout表格布局

第30节:两分钟掌握FrameLayout帧布局

第31节:少用的AbsoluteLayout绝对布局

第32节:新推出的GridLayout网格布局

第33节: Android事件处理概述

第34节:Android中基于监听的事件处理

第35节:Android中基于回调的事件处理

第36节:Android系统事件的处理

第37节:初识ListView

第38节:初识Adapter

第39节:ListActivity和自定义列表项

第40节:自定义ArrayAdapter

第41节:使用SimpleAdapter

第42节:自定义BaseAdapter

第43节:ListView优化和列表首尾使用

第44节:ListView数据动态更新

第45节:网格视图GridView返回搜狐,查看更多

Android零基础入门|视图切换组件ViewSwitcher

(android spinner动态数据)

前面三期学习了ProgressBar系列组件,那本期开始一起来学习ViewAnimator组件。

一、ViewAnimator组件概述

ViewAnimator是一个基类,它继承了 FrameLayout,因此它表现出FrameLayout的特征,可以将多个View组件叠在一起。 ViewAnimator额外增加的功能正如它的名字所暗示的一样,ViewAnimator可以在View切换时表现出动画效果。

ViewAnimator及其子类的继承关系图如下图所示。

ViewAnimator及其子类也是一组非常重要的UI组件,这种组件的主要功能是增加动画效果,从而使界面更加炫。使用ViewAnimator 时可以指定如下常见XML属性。

  • android:animateFirstView:设置ViewAnimator显示第一个View组件时是否使用动画。

  • android:inAnimation:设置ViewAnimator显示组件时所使用的动画。

  • android:outAnimation:设置ViewAnimator隐藏组件时所使用的动画。

在实际项目中往往会使用ViewAnimator的几个子类。

二、ViewSwitcher使用

ViewSwitcher代表了视图切换组件,它本身继承了 FrameLayout,因此可以将多个View 层叠在一起,每次只显示一个组件。当程序控制从一个View切换到另一个View时, ViewSwitcher支持指定动画效果。

为了给ViewSwitcher添加多个组件,一般通过调用ViewSwitcher的setFactory (ViewSwitcherViewFactory)方法为之设置 ViewFactory,并由该 ViewFactory 为之创建 View 即可。

接下来通过一个简单的示例程序来学习ViewSwitcher的使用,主要是实现Android 5.0的Launcher界面的分屏、左右滚动效果。

继续使用WidgetSample工程的advancedviewsample模块,在app/main/res/layout/目录下创建viewswitcher_layout.xml文件,在其中填充如下代码片段:(android spinner动态数据)

上面的界面布局文件中只是定义了一个ViewSwitcher组件和两个按钮,这两个按钮分别用于控制该ViewSwitcher显示上一屏、下一屏的程序列表。

Launcher界面由GridView完成,创建布局文件slide_gridview.xml,代码如下:

创建GridView中每个Item的布局文件slide_gridview_item.xml,代码如下:

为了方便操作,将GridView内使用的内容定义为实体类ViewSwitcherItemData,代码如下:

接下来创建GridView的适配器ViewSwitcherAdapter,继承BaseAdapter类,代码如下:

使用扩展BaseAdapter的方式为GridView提供Adapter,关键就是根据用户单击的按钮来动态计算该BaseAdapter应该显示哪些程序列表。

使用Activity类的screenNo保存当前正在显示第几屏的程序列表,BaseAdapter会根据screenNo 动态计算该Adapter总共包含多少个列表项(如getCount()方法所示),会根据screenNo计算每个列表项的数据(如getltem(int position)方法所示)。

新建ViewSwitcherActivity.java文件,加载上面新建的布局文件,具体代码如下:

重点在于为ViewSwitcher设置ViewFactory对象,并且当用户单击“<”和“>”两个按钮时控制ViewSwitcher显示“上一屏”和“下一屏”的应用程序。

当用户单击按钮时,程序的事件处理方法将会控制ViewSwitcher调用showNext() 方法显示下一屏的程序列表。而且此时screenNo被加1,因而Adapter将会动态计算下一屏的程序列表,再将该Adapter传给ViewSwitcher接下来要显示的GridView。

运行程序,点击“<”和“>”两个按钮时可以看到下图所示界面切换效果。

为了实现ViewSwitcher切换View时的动画效果,程序的事件处理方法中调用了 ViewSwitcher的setInAnimation()、setOutAnimation()方法来设置动画效果。本程序由于 Android系统只提供的两个slide_in_left、slide_out_right动画资源,需要自行提供slide_in_right、slide_out_left动画资源,详细会在Android高级部分进行讲解。

其中R.anim.slide_in_right动画资源对应的代码如下:

R.anim.slide_out_left动画资源对应的代码如下:

至此,关于ViewSwitcher视图切换组件学习完毕,如果还有不清楚的地方建议回头再多做练习。

今天就先到这里,如果有问题欢迎留言一起探讨,也欢迎加入Android零基础入门技术讨论微信群,共同成长!

此文章版权为微信公众号分享达人秀(ShareExpert)——鑫鱻所有,若需转载请联系作者授权,特此声明!

往期总结分享:

第1节:Android的前世今生

第2节:Android 系统架构和应用组件那些事

第3节:带你一起来聊一聊Android开发环境

第4节:正确安装和配置JDK

第5节:善用ADT Bundle

第6节:配置优化SDK Manager

第7节:搞定Android模拟器

第8节:HelloWorld,第一趟旅程出发点

第9节:Android实战,不懂代码也可以开发

第10节:开发IDE迎来Android Studio

第11节:运行Android Studio工程

第12节:熟悉Android Studio界面

第13节:Android Studio配置优化

第14节:使用高速Genymotion

第15节:掌握Android Studio项目结构

第16节:Android用户界面开发概述

第17节:文本框TextView

第18节:输入框EditText

第19节:按钮Button

第20节:选择控件CheckBox和RadioButton

第21节:开关控件ToggleButton和Switch

第22节:图像视图ImageView

第23节:ImageButton和ZoomButton

第24节:自定义View简单使用

第25节:简单且最常用的LinearLayout

第26节:layout_gravity和gravity大不同

第27节:正确使用padding和margin

第28节:轻松掌握RelativeLayout相对布局

第29节:善用TableLayout表格布局

第30节:两分钟掌握FrameLayout帧布局

第31节:少用的AbsoluteLayout绝对布局

第32节:新推出的GridLayout网格布局

第33节: Android事件处理概述

第34节:Android中基于监听的事件处理

第35节:Android中基于回调的事件处理

第36节:Android系统事件的处理

第37节:初识ListView

第38节:初识Adapter

第39节:ListActivity和自定义列表项

第40节:自定义ArrayAdapter

第41节:使用SimpleAdapter

第42节:自定义BaseAdapter

第43节:ListView优化和列表首尾使用

第44节:ListView数据动态更新

第45节:网格视图GridView

第46节:列表选项框Spinner

第47节:AutoCompleteTextView自动文本

第48节:ExpandableListView多级选择

第49节:AdapterViewFlipper图片轮播

第50节:StackView卡片堆叠

第51节:进度条ProgressBar

第52节:自定义炫酷进度条

第53节:拖动条SeekBar和星级评分条RatingBar返回搜狐,查看更多



一.求解spinner下拉选项如何从网络动态适配数据

这个和listview的用法是一样的,你先获取到网络上的数据,然后setadapter就行。类似这样ArrayAdapter adapter5 = new ArrayAdapter(this, android.R.layou尝筏佰禾脂鼓拌态饱卡t.simple_spinner_item, threeArray); waited_Spinner_three.setAdapter(adapter5); adapter5.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); waited_Spinner_three.setPrompt("请选择三级分类"); 查看原帖>>


二.Android 怎么动态的设置Spinner联动

您好,您这样:
spinner有一个setSelection(),将spinner设为全局变量后用spinner.setSelection(GestureConstant.FILE_GESTURE, fal肠粻斑救职嚼办楔暴盲se);就可以了。
贴一部分代码,不完整。
Activity
[java] view plaincopy
Intent fileIntent = new Intent(FileManager.this,
CreateGestureActivity.class);
fileIntent.putExtra("file", "file");
startActivity(fileIntent);

其他答案

  1.确定需要的数据放到res/values/arrays.xml文件(定义数组)

  -省份-

  河北省

  山西省

  北京市

  -城市-

  承德市

  邯郸市

  廊坊市

  -城市-

  海淀区

  朝阳区

  崇文区

  -城市-

  大同市

  临汾市

  2.编写xml界面res/values/main.xml文件(编写界面)

  android:orientation="vertical"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  >

  android:layout_width="fill_parent"

  android:layout_height="wrap_content"

  android:id="@+id/textView"

  />

  android:layout_width="fill_parent"

  android:layout_height="wrap_content"

  >

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:id="@+id/province"

  />

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:layout_toRightOf="@id/province"

  android:id="@+id/city"

  />

  3.在Activity中实现省市联动功能

  /**

  * 通过Spinner实现省市(两级)联动

  * @author 黑色天空

  */

  public class MainActivity extends Activity {

  private TextView textView ;

  private Spinner province;

  private Spinner city;

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  //String[] provinces = new String[]{"-省份-","河北省","山西省",......余下全文>>
彡落叶丶飘扬 2016-1-27

今天遇到一个问题:一个Activity(A)跳转到另一个Activity(B),我的想法是从A中ListView选中的项中提取出想要的字符串,然后传递到B中,当B中接收到传递过来的信息后,对B中的一个Spinner做相应的改变。
A传数据给B很简单,在A中用Intent去putExtra就行, 然后到B中的onCreate()中用getExtras就行了,可是怎么才能让Spinner也跟着改变呢?

原来spinner有一个setSelection(),将spinner设为全局变量后用spinner.setSelection(GestureConstant.FILE_GESTURE, false);就可以了。

贴一部分代码,不完整。

A Activity

[java] view plaincopy
Intent fileIntent = new Intent(FileManager.this,
CreateGestureActivity.class);
fileIntent.putExtra("file", "file");
startActivity(fileIntent);

B Activity

[java] view plaincopy
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.create_gesture);

spinner = (Spinner) findViewById(R.id.spinner);

// 设置spinner的adapter
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.add_gesture_prompt,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setPrompt("创建手势类型");
// 设置spinner的监听器
spinner.setOnItemSelectedListener(new OnItemSelectedListener()
{

@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id)
......余下全文>>
okmusic1 2016-1-18

重写一下Adapter,然后自己对Adapter每个Item布局,在布局里面设置一下点击效果就行了。如:
public class MainActivity extends Activity {

private Spinner mSpinner;

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

private void initView(){
mSpinner = (Spinner)findViewById(R.id.spinner);
MyAdapter adapter = new MyAdapter(getResources().getStringArray(R.array.girl_names));
mSpinner.setAdapter(adapter);
}

private class MyAdapter extends BaseAdapter{
private String[] idInt ;
public MyAdapter(String[] idInt){
this.idInt = idInt;
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return idInt.length;
}

@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return idInt[arg0];
}

@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}

@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
if(arg1 == null){
arg1 = getLayoutInflater().inflate(R.layout.spinner_item, null);
}
TextView text = (TextView)arg1.findViewById(R.id.spinner_item_id);
text.setText(idInt[arg0]);
return arg1;
}

}
spinner_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="schemas.android.com/apk/res/android"
android......余下全文>>
厦门侯 2016-1-15

zhidao.baidu.com/...RmahzS
这里有
哈哈哈哈大笑ok 2016-1-27

查看"编程语言"分类更多问题

回顶部↑

三.Android 开发 Spinner变化的问题 具体看补充。

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.select_dialog_item, arrList);
sp.setAdapter(adapter);
使用上面的方法显示列表,你将“缉耿光际叱宦癸为含力打游戏”添加到arrList数组中再刷新就可以了。。。
你现在是将Spinner中数据写在arrays.xml中了吧、、、

其他答案

你每次加载spinner都会用到adapter的 你给你的string数组加上数据“游戏”,然后再缉耿光际叱宦癸为含力adapter.notifyDataSetChanged(); 这个方法可以帮到你
精灵飞花baby 2014-10-28

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.select_dialog_item, arrList);
sp.setAdapter(adapter);
使用上面的方法显示列表,你将“打游戏”添加到arrList数组中再刷新就可以了。。。
你现在是将Spinner中数据写在arrays.xml中了吧、、、
adekof14 2015-11-4

查看"其他编程语言"分类更多问题

回顶部↑

四.android 怎么从sqlite读取数据到spinner上拉中显示

您好,希望以下回答能帮助您
port android.app.Activity;
  import android.database.Cursor;
  import an辅珐滇貉鄄股殿瘫东凯droid.os.Bundle;
  import android.provider.ContactsContract.CommonDataKinds.StructuredName;
  import android.provider.ContactsContract.Data;
  import android.widget.SimpleCursorAdapter;
  import android.widget.Spinner;

  public class temp extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  Cursor c = managedQuery(Data.CONTENT_URI,
  new String[]{ Data._ID, Data.DATA1 },
  Data.MIMETYPE + "='" + StructuredName.CONTENT_ITEM_TYPE + "'",
  null,
  null);

  SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
  android.R.layout.simple_dropdown_item_1line,
  c,
  new String[]{ Data.DATA1 },
  new int[]{ android.R.id.text1 });

  Spinner s1 = (Spinner) findViewById(R.id.Spinner01);
  s1.setAdapter(adapter);
  }
  }
如您还有疑问可继续追问。


五.android中spinner怎样绑定数据

/** * * 重写ArrayAdapter * */public class SpinnerAdapter extends ArrayAdapter<Product> {private int resourceId;public SpinnerAdapter(Context context, int textViewResourceId,List<Product> objects) {super(context, textViewResourceId, objects);this.resourceId = textViewResourceId;}public View getView(int position, View convertView, ViewGroup parent) {Product prod = getItem(position);LinearLayout userListItem = new LinearLayout(getContext());TextView tv1 = new TextView(getContext());TextView tv2 = new TextView(getContext());// 判断if (prod instanceof Prod_Level2) {tv1.setText(String.valueOf(((Prod_Level2) prod).getProd_Level2_Cd()));tv2.setText(((Prod_Level2) prod).getProd_Level2_NM());} else if (prod instanceof Prod_Level3) {tv1.setText(((Prod_Level3) prod).getProd_Level3_Cd() + "");tv2.setText(((Prod_Level3) prod).getProd_Level3_NM());} else if (prod instanceof Prod_Level4) {tv1.setText(((Prod_Level4) prod).getProd_Level4_Cd() + "");tv2.setText(((Prod_Level4) prod).getProd_Level4_NM());} else if (prod instanceof Producted_Type) {tv1.setText(((Producted_Type) prod).getProducted_Type_Cd() + "");tv2.setText(((Producted_Type) prod).getProducted_Type_NM());}tv1.setVisibility(View.GONE);userListItem.addView(tv1);tv2.setTextSize(20);tv2.setTextColor(Color.BLACK);userListItem.addView(t......余下全文>>


六.android的spinner控件 怎么把选中值 返回到 自己创建的textview 里??

首先你要定义一个Spinner,比如其引用是 sp 然后String str = sp.getSelectedItem()).toString()就获取到了你选中的值迹长管短攮的归痊害花。
将str使用到你的textview里就OK了!


七.android如何动态更新二级联动spinner?

spinner有一个setSelection(),将spinner设为全局变量后用spi筏常摧端诋得搓全掸户nner.setSelection(GestureConstant.FILE_GESTURE, false);就可以了。
贴一部分代码,不完整。
Activity
[java] view plaincopy
Intent fileIntent = new Intent(FileManager.this,
CreateGestureActivity.class);
fileIntent.putExtra("file", "file");
startActivity(fileIntent);



八.android spinner 控件 怎么 把显示的数据与选择之后的值分开

如果你想用spinner的话建议自己定义adapter那个封装好的arrayAdapter不灵活,太恶心了,如果你自定义adapter的话,我感觉就没啥难度了,直接List <Object>list = new ArrayList<Obejct>();那个object就是一个类似于bin的类,你可以通过setValue(),和 setId();把你的值set进去,然后你在选择spinner时就可以拿到耿定钝剐墁溉惰税伐粳下标一般为arg2,然后通过list拿出数据,在getId(),就ok了。

android spinner动态数据 Android零基础入门|下拉框Spinner由美文导刊网(www.eorder.net.cn)收集整理,转载请注明出处!原文地址http://www.eorder.net.cn/pic44234/

文章评论
Copyright © 2006 - 2016 www.eorder.net.cn All Rights Reserved
美文导刊网 版权所有