Android学习笔记(四)

1. 什么是Spinner?

  Spinner是一个在手机上显示的下拉菜单

2. 如何声明一个Spinner?

       静态布局:

  1).在布局文件中使用:

<Spinner android:id=”@+id/spinnerId”
      android:layout_width=”match_parent”
      android:layout_height=”wrap_content”/>

              来声明。

        注意:是大写的Spinner,而非spinner,若写成小写的,则会报错

android.view.InflateException: Binary XML file line #8: Error inflating class spinner

      2).在string.xml中定义一个数组:

<string-array name=” bankArray”>
    <item>工商银行</item>\
    <item>招商银行</item>
    <item>中国银行</item>
    <item>……</item>
</string-array>

   3).创建一个ArrayAdapter

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.bankArray, android.R.layout.simple_spinner_item);
// android.R.layout.simple_spinner_item是android自带的一个布局文件,用于定义下拉菜单点击之前的样式
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

              // android.R.layout.simple_spinner_dropdown_item也是android自带的一个布局文件,用于定义点击下拉菜单弹出来的界面样式

      4).得到Spinner对象,并设置适配器    

spinner = (Spiinner)findViewById(R.id.spinnerId);
spinner.setAdapter(adapter);
spinner.setPrompt(“请选择银行”);//设置弹出的下拉列表的标题

      5).创建监听器(实现android.widget.AdapterView.OnItemSelectedListener接口)

class SpinnerOnSelectedListener implements OnItemSelectedListener{
    @Override//选择了某一个条目执行的方法
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        //参数1:整个列表对象;2:点击的控件
        //3:点击控件在父控件中的位置;4:选中条目的row id
        String selected = parent.getItemAtPosition(position).toString();
        System.out.println(selected);
    }
    @Override//什么都没选择的时候执行的方法
    public void onNothingSelected(AdapterView<?> parent) {
        System.out.println("Noting selected");
    }
}

     6).为spinner绑定监听器 

 spinner.setOnItemSelectedListener(new SpinnerOnSelectedListener());

3. ArrayAdapter的另一种用法:

     除了可以使用strings.xml文件当中的数组创建ArrayAdapter之外,还可以动态的创建ArrayAdapter:

List<String> list = new ArrayList<String>();
//注意:这里我直接使用了List<String>,这个list中存的就是String。如果不是,那么控件显示的内容则为该对象调用toString()方法后的内容。
list.add(“test1”);
list.add(“test2”);
……

      //这里调用ArrayAdapter的构造函数来创建,参数依次为:上下文、显示条目的布局文件、使用的TextView的ID、要显示的数据

       //这句话的意思就相当于是:把list中的每一个元素用一个R.id.textViewId显示,样式为R.layout.item。

ArrayAdapter adapter = new ArrayAdapter(this, R.layout.item, R.id.textViewId, list);

       下面是item.xml布局文件(这里为了简单起见,只定义了ID、宽和高,各种样式已经省略):

<LinearLayout …….
    <TextView id=”@+id/textViewId”
     android:layout_width=”wrap_content”
     android:layout_height=”wrap_content” />
</LinearLayout>

  注意蓝色的字体为布局文件,红色的为控件的ID,二者必须和new ArrayAdapter的参数对应。

       这样就可以不把数据写死,可以灵活运用。


你可能感兴趣的:(android,Spinner,笔记)