Spinner的使用

来源:互联网 发布:matlab有限元编程 编辑:程序博客网 时间:2024/06/10 22:42

1.首先建立一个水平线性布局管理器,在线性布局器中建立两个列表框,第一个列表框指向数据数组,第二个为空列表框,实现代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <Spinner 
        android:id="@+id/spinner1"
        android:prompt="@string/port"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:entries="@array/cityname"/>
    <Spinner
        android:id="@+id/spinner2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:prompt="@string/portm"
        />

</LinearLayout>

2、新建一个array.xml,为第一个列表框设置列表项,有关代码如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
      <string-array name="cityname">
          <item >广西-南宁</item>
          <item >广西-钦州</item>
          <item>广西-北海</item>
          <item>广西-防城</item>
      </string-array>


</resources>

3.在主方法中建立事件监听器,当选择第一个列表中的值时,列表二中的值也跟着改变,有关代码如下:

package com.example.temp;


import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;


public class SpinerDemo extends Activity {
private Spinner spinner1=null;
private Spinner spinner2=null;
private TextView text=null;
/******************定义二级列表****************************/
private String area[][]={{"邕宁区","青秀区","江南区","西乡塘","武鸣县","马山县","宾阳"
     ,"横县"},
{"灵山","浦北","钦南区","钦北区"},
     {"合浦","银滩","铁山港"},
     {"东兴","上思"}};
private ArrayAdapter<CharSequence>adapter=null;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_spiner_demo);
this.spinner1=(Spinner)super.findViewById(R.id.spinner1);      //获取spinner1的位置
this.spinner2=(Spinner)super.findViewById(R.id.spinner2);
spinner1.setOnItemSelectedListener(new OnItemSelectedListener(){


@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO 自动生成的方法存根
SpinerDemo.this.adapter=new ArrayAdapter<CharSequence>(
SpinerDemo.this,android.R.layout.simple_spinner_item,
SpinerDemo.this.area[position]);
SpinerDemo.this.spinner2.setAdapter(adapter);    //列表二关联adapter

}


@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO 自动生成的方法存根

}});
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.spiner_demo, menu);
return true;
}


}

效果图:



本实例中,关键是弄清楚ArrayAdapter与SPinner的关联和有关参数的联系。实现代码非常灵活,并且代码简洁易理解!

1.首先建立一个水平线性布局管理器,在线性布局器中建立两个列表框,第一个列表框指向数据数组,第二个为空列表框,实现代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <Spinner 
        android:id="@+id/spinner1"
        android:prompt="@string/port"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:entries="@array/cityname"/>
    <Spinner
        android:id="@+id/spinner2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:prompt="@string/portm"
        />

</LinearLayout>

2、新建一个array.xml,为第一个列表框设置列表项,有关代码如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
      <string-array name="cityname">
          <item >广西-南宁</item>
          <item >广西-钦州</item>
          <item>广西-北海</item>
          <item>广西-防城</item>
      </string-array>


</resources>

3.在主方法中建立事件监听器,当选择第一个列表中的值时,列表二中的值也跟着改变,有关代码如下:

package com.example.temp;


import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;


public class SpinerDemo extends Activity {
private Spinner spinner1=null;
private Spinner spinner2=null;
private TextView text=null;
/******************定义二级列表****************************/
private String area[][]={{"邕宁区","青秀区","江南区","西乡塘","武鸣县","马山县","宾阳"
     ,"横县"},
{"灵山","浦北","钦南区","钦北区"},
     {"合浦","银滩","铁山港"},
     {"东兴","上思"}};
private ArrayAdapter<CharSequence>adapter=null;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_spiner_demo);
this.spinner1=(Spinner)super.findViewById(R.id.spinner1);      //获取spinner1的位置
this.spinner2=(Spinner)super.findViewById(R.id.spinner2);
spinner1.setOnItemSelectedListener(new OnItemSelectedListener(){


@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO 自动生成的方法存根
SpinerDemo.this.adapter=new ArrayAdapter<CharSequence>(
SpinerDemo.this,android.R.layout.simple_spinner_item,
SpinerDemo.this.area[position]);
SpinerDemo.this.spinner2.setAdapter(adapter);    //列表二关联adapter

}


@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO 自动生成的方法存根

}});
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.spiner_demo, menu);
return true;
}


}

效果图:



本实例中,关键是弄清楚ArrayAdapter与SPinner的关联和有关参数的联系。实现代码非常灵活,并且代码简洁易理解!

0 0
原创粉丝点击