当前位置: 代码迷 >> Android >> 从零开始学android<Spinner下拉列表框的使用.9.>
  详细解决方案

从零开始学android<Spinner下拉列表框的使用.9.>

热度:87   发布时间:2016-04-28 06:13:52.0
从零开始学android<Spinner下拉列表框的使用.九.>
下拉列表框也是一种常见的图形组件,它可以为用户提供列表的选则方式,与复选框或单选钮相比还可以节省手机的屏幕空间,在Android中可以使用android.widget.Spinner类实现,此类定义如下:
java.lang.Object
  ? android.view.View
    ? android.view.ViewGroup
      ? android.widget.AdapterView<T extends android.widget.Adapter>
        ? android.widget.AbsSpinner
          ? android.widget.Spinner 
No.
方法
类型
描述
1
public CharSequence getPrompt ()
普通
取得提示文字
2
public void setPrompt (CharSequence prompt)
普通
设置组件的提示文字
3
public void setAdapter (SpinnerAdapter adapter)
普通
设置下拉列表项
4
public void setOnItemClickListener(
AdapterView.OnItemClickListener l)
普通
设置选项单击事件

…………………………………………………………毫无美感的分割线…………………………………………………………
配置Strings.xml
<?xml version="1.0" encoding="utf-8"?><resources>    <string name="app_name">Hewwlo World</string>    <string name="action_settings">Settings</string>    <string name="hello_world">Hello world!</string>    <string-array name="city_name">        <item >河南</item>        <item >北京</item>        <item >上海</item>    </string-array>        <string name="city_info">请选择您的城市</string></resources>


在Android中,可以直接在main.xml文件中定义“<Spinner>”节点,但是在定义此元素的时候却不能直接设置其显示的列表项,关于下拉列表框中的列表项有以下两种方式进行配置:
方式一:直接通过资源文件配置
方式二:通过android.widget.ArrayAdapter类读取资源文件或者是指定具体设置的数据; 
接下来先看
第一种。

这个时候定义的是一个“string-array”的根节点,表示里面配置的是一个数组的集合,而里面的每一个“<item>”节点表示的就是每一个列表项的内容,随后在layout/main.xml文件定义“<Spinner>”节点的时候直接使用“android:entries="@array/city_labels"”属性就可以读取信息了。
<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/info_city"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="请选择您喜欢的城市:" />    <Spinner        android:id="@+id/mycity"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:entries="@array/city_name"//设置下拉列表        android:prompt="@string/city_info" />//设置提示文字</LinearLayout>

运行程序


这种方式配置简单操作也不错,但是在开发的灵活性上有一定的局限性。
…………………………………………………………毫无美感的分割线…………………………………………………………
第二种方式
布局文件
<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/info_city"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="请选择您喜欢的城市:" />    <Spinner        android:id="@+id/mycity"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        /></LinearLayout>
JAVA文件
package com.example.hewwloworld;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.Spinner;public class MainActivity extends Activity {private Spinner city=null;//初始化Spinnerprivate ArrayAdapter<CharSequence> adaptercity=null;//初始化ArrayAdapter	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		super.setContentView(R.layout.activity_main);		this.city=(Spinner)super.findViewById(R.id.mycity);//取得组件		this.city.setPrompt("请选择您的城市");//设置提示文字		this.adaptercity=ArrayAdapter.createFromResource(this, R.array.city_name, android.R.layout.simple_spinner_item);//设置下拉选项及下拉列表格式		this.adaptercity.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//设置按下选项列表格式
this.city.setAdapter(adaptercity);//配置adapter}}

效果和第一种方式是一样的。

当然通过集合配置也是可以完成同样的功能。
package com.example.hewwloworld;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.Spinner;public class MainActivity extends Activity {private Spinner city=null;private  List<CharSequence> city_name=null;private ArrayAdapter<CharSequence> adaptercity=null;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		super.setContentView(R.layout.activity_main);		this.city=(Spinner)super.findViewById(R.id.mycity);		this.city_name=new ArrayList<CharSequence>();		city_name.add("河南");		city_name.add("上海");		city_name.add("北京");		this.city.setPrompt("请选择您的家乡");		this.adaptercity=new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item,city_name);		this.adaptercity.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);		this.city.setAdapter(adaptercity);		this.city.setAdapter(adaptercity);	}}


Spinner的使用比前面的稍微多了一点东西,不过大家好好看看句都能看懂。
下节预报:ImageView和ImageButton的使用


  相关解决方案