Android 学习 笔记_12. Spinner的简单实使用
2013-03-26 01:22
645 查看
Android的控件有很多种,其中就有一个Spinner的控件,这个控件其实就是一个下拉显示列表。Spinner是位于 android.widget包下的,每次只显示用户选中的元素,当用户再次点击时,会弹出选择列表供用户选择,而选择列表中的元素同样来自适配器。Spinner是View类的一个子类。
现在我们通过两种方式来创建Spinner加强练习。一种是静态添加,一种是动态添加。静态好理解,就是直接在String.xml 中布局,动态创建一个Spinner,就是说用户每次想创建一个下拉列表,我们不能每次都在String.xml 中敲写代码,那么我们如何动态的创建ArrayAdapter呢?
下面是一个下拉框列表的小程序,程序主要是通过两个下拉列表实现的,第一个下拉列表是静态添加,第二个下拉列表是根据第一个列表所选的选项来动态添加下拉数据。具体的截图如下:
MainActivity.java
String.xml
spinner_item.xml
main.xml
总结:
(1、一开始做第一个下拉列表的时候,出现了这样的问题:
而那时候第30行主要是spinner.setAdapter(adapter);这句代码,意思就是说传进来的adapter是空的,于是我加了System.out.println("spinner" + spinner);一句这样 的输出语句测试,发现spinner是空的,最后在String.xml中发现android:id="@+id/spinnerId" 写成了android:text="@+id/spinnerId" 。
(2、静态添加下拉列表的关键代码莫过于:
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.array_spinner,android.R.layout.simple_spinner_item);
/* set方法是来设置spinner中每个条目的样式 */
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setPrompt("Choose");
首先通过createFromResource方法创建一个ArrayAdapter对象,然后设置spinner的样式,再把adapter对象传进spinner里面。
而动态添加则是:
List<String> list = new ArrayList<String>();
list.add("Raoping");
list.add("Guangzhou");
list.add("shantou");
ArrayAdapter adapterTwo = new ArrayAdapter(MainActivity.this,R.layout.spinner_item, R.id.textviewId, list);
spinnerTwo.setAdapter(adapterTwo);
spinnerTwo.setPrompt("ChooseTwo");
通过new一个List对象,然后再将数据添加到list中,最后,再new一个ArrayAdapter对象,再添加到Spinner中。
(3、将showToast函数独立开来。
(4、在将第一个列表所选的selected传进第二个列表的时候,有一个判断,就是if (selected.equals("Guangdong")),判断两个String的值是否相等,有一个地方需要注意,
就是
string1="aaa";
string2="aaa";
这两个字符串当然应该是相等的。
如果用表达式string1==string2,则该表达式的值为false
如果用表达式string1.equals(string2),则该表达式的值为true
现在我们通过两种方式来创建Spinner加强练习。一种是静态添加,一种是动态添加。静态好理解,就是直接在String.xml 中布局,动态创建一个Spinner,就是说用户每次想创建一个下拉列表,我们不能每次都在String.xml 中敲写代码,那么我们如何动态的创建ArrayAdapter呢?
下面是一个下拉框列表的小程序,程序主要是通过两个下拉列表实现的,第一个下拉列表是静态添加,第二个下拉列表是根据第一个列表所选的选项来动态添加下拉数据。具体的截图如下:
MainActivity.java
package zzl.spinner_01; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; 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; import android.widget.Toast; public class MainActivity extends Activity { private Spinner spinner = null; private Spinner spinnerTwo = null; private TextView textviewId = null; String selected = null; String selectedTwo = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); spinner = (Spinner) findViewById(R.id.spinnerId); spinnerTwo = (Spinner) findViewById(R.id.spinnerTwoId); System.out.println("spinner" + spinner); /* * 1、固定Spinner: 通过createFromResource方法创建一个ArrayAdapter对象 参数1:上下文对象; * 参数2:引用String.xml中的String数组 参数3: 指定spinner的样式 */ ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.array_spinner, android.R.layout.simple_spinner_item); /* set方法是来设置spinner中每个条目的样式 */ adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); spinner.setPrompt("Choose"); // 绑定监听器 spinner.setOnItemSelectedListener(new SpinnerSelectedListner()); } class SpinnerSelectedListner implements OnItemSelectedListener { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) { // TODO Auto-generated method stub selected = adapterView.getItemAtPosition(position).toString(); showToast(0, "您选择了:" + selected); /* * 2、自动添加spinner */ ChooseTwo(selected); } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub showToast(1, "您没有做选择!"); } // 第二块的 public void ChooseTwo(CharSequence selected) { List<String> list = new ArrayList<String>(); System.out.println("selected" + selected); if (selected.equals("Guangdong")) {//比较。。 list.add("Raoping"); list.add("Guangzhou"); list.add("shantou"); System.out.println("selected" + selected); } else list.add("Nothing"); ArrayAdapter adapterTwo = new ArrayAdapter(MainActivity.this, R.layout.spinner_item, R.id.textviewId, list); spinnerTwo.setAdapter(adapterTwo); spinnerTwo.setPrompt("ChooseTwo"); //spinnerTwo.setOnItemSelectedListener(new SpinnerSelectedListner()); } public void showToast(int flag, CharSequence msg) { if (flag == 1) Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT) .show(); else if (flag == 0) Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT) .show(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
String.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">spinner_01</string> <string name="hello_world">Hello world!</string> <string-array name="array_spinner"> <item>Guangdong</item> <item>Fujian</item> <item>Beijing</item> <item>Guangxi</item> <item>Yunnan</item> <item>Guizhou</item> <item>Hunan</item> <item>Taiwan</item> <item>Heilongjian</item> </string-array> </resources>
spinner_item.xml
<TextView android:id="@+id/textviewId" android:layout_width="fill_parent" android:layout_height="wrap_content"/>
main.xml
<Spinner android:id="@+id/spinnerId" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <Spinner android:id="@+id/spinnerTwoId" android:layout_width="fill_parent" android:layout_height="wrap_content"/>
总结:
(1、一开始做第一个下拉列表的时候,出现了这样的问题:
而那时候第30行主要是spinner.setAdapter(adapter);这句代码,意思就是说传进来的adapter是空的,于是我加了System.out.println("spinner" + spinner);一句这样 的输出语句测试,发现spinner是空的,最后在String.xml中发现android:id="@+id/spinnerId" 写成了android:text="@+id/spinnerId" 。
(2、静态添加下拉列表的关键代码莫过于:
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.array_spinner,android.R.layout.simple_spinner_item);
/* set方法是来设置spinner中每个条目的样式 */
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setPrompt("Choose");
首先通过createFromResource方法创建一个ArrayAdapter对象,然后设置spinner的样式,再把adapter对象传进spinner里面。
而动态添加则是:
List<String> list = new ArrayList<String>();
list.add("Raoping");
list.add("Guangzhou");
list.add("shantou");
ArrayAdapter adapterTwo = new ArrayAdapter(MainActivity.this,R.layout.spinner_item, R.id.textviewId, list);
spinnerTwo.setAdapter(adapterTwo);
spinnerTwo.setPrompt("ChooseTwo");
通过new一个List对象,然后再将数据添加到list中,最后,再new一个ArrayAdapter对象,再添加到Spinner中。
(3、将showToast函数独立开来。
(4、在将第一个列表所选的selected传进第二个列表的时候,有一个判断,就是if (selected.equals("Guangdong")),判断两个String的值是否相等,有一个地方需要注意,
就是
string1="aaa";
string2="aaa";
这两个字符串当然应该是相等的。
如果用表达式string1==string2,则该表达式的值为false
如果用表达式string1.equals(string2),则该表达式的值为true
相关文章推荐
- android菜鸟学习笔记12----Android控件(一) 几个常用的简单控件
- APIDemo学习笔记——Android上几种简单的Animation使用方法(三)——3D Transition
- 【android控件学习笔记】使用Spinner实现下拉列表
- 【Android】学习笔记(9)——SQLite简单使用
- APIDemo学习笔记——Android上几种简单的Animation使用方法(二)
- android菜鸟学习笔记21----ContentProvider(一)ContentProvider的简单使用
- android菜鸟学习笔记22----ContentProvider(二)ContentObserver的简单使用
- APIDemo学习笔记——Android上几种简单的Animation使用方法(一)
- android菜鸟学习笔记14----Android控件(三) ListView的简单使用
- Android 学习笔记(12)—— Spinner下拉控件
- Android 学习 笔记_12. Spinner的简单实使用
- APIDemo学习笔记——Android上几种简单的Animation使用方法(二)
- 【Android】学习笔记(12)——Animation使用方法(下)
- Android 学习笔记-eclipse下ButterKnife配置和简单使用
- android 自定义view学习笔记————Paint和Canvas的简单使用
- android菜鸟学习笔记31----Android使用百度地图API(二)获取地理位置及地图控制器的简单使用
- android菜鸟学习笔记27----Fragment的简单使用
- APIDemo学习笔记——Android上几种简单的Animation使用方法
- Android 学习笔记之AndBase框架学习(二) 使用封装好的进度框,Toast框,弹出框,确认框...
- SQLite 使用方法 -- MarsChen Android 开发教程学习笔记