Android学习笔记(四)

简介:

1. 什么是Spinner?

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

2. 如何声明一个Spinner?

       静态布局:

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

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

              来声明。

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

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

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

?
1
2
3
4
5
6
< string-array  name=” bankArray”>
     < item >工商银行</ item >\
     < item >招商银行</ item >
     < item >中国银行</ item >
     < item >……</ item >
</ string-array >

   3).创建一个ArrayAdapter

?
1
2
3
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对象,并设置适配器    

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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绑定监听器 

?
1
  spinner.setOnItemSelectedListener( new  SpinnerOnSelectedListener());

3. ArrayAdapter的另一种用法:

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

?
1
2
3
4
5
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。

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

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

?
1
2
3
4
5
< LinearLayout  …….
     <TextView id=”@+id/textViewId”
     android:layout_width=”wrap_content”
     android:layout_height=”wrap_content” />
</ LinearLayout >

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

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

目录
相关文章
|
7月前
|
架构师 网络协议 算法
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
|
7月前
|
消息中间件 缓存 架构师
2024年阿里Android高级面试题分享,附学习笔记+面试整理+进阶书籍
2024年阿里Android高级面试题分享,附学习笔记+面试整理+进阶书籍
|
缓存 安全 数据库
Android学习笔记4
Android学习笔记4
63 0
|
XML 数据库 数据安全/隐私保护
Android学习笔记3
Android学习笔记3
167 0
|
XML Java Android开发
Android学习笔记2
Android学习笔记2
77 0
|
XML Java Linux
Android学习笔记1
Android学习笔记1
61 0
|
存储 Java API
Android逆向 | 基础篇 - Java 学习笔记03
Android逆向 | 基础篇 - Java 学习笔记03
|
Java 编译器 Android开发
Android逆向 | 基础篇 - Java 学习笔记02
Android逆向 | 基础篇 - Java 学习笔记02
|
Java 编译器 Android开发
Android逆向 | 基础篇 - Java 学习笔记01
Android逆向 | 基础篇 - Java 学习笔记01
|
Java 开发工具 Android开发
Android中的Binder学习笔记
Android中的Binder学习笔记
Android中的Binder学习笔记