今天在看的是spinner是如何使用的,这里分两种:
第一种是直接在xml文件中设置,用到的属性是android:entries=””,当你写完这个之后就可以
直接运行了。
既然有xml静态的方式,那么另一种大家都懂,就是在代码中动态的写,这里又可以分成两种,
第一种使用的是new 一个ArrayAdapter对象,这里需要传递几个参数,第一个是context对象,第二个是布局,第三个是你的数据源对象,这里着重说一下第二个参数,这个参数可以直接
使用系统的参数android.R.layout.simple_spinner_item,其实这个就是一个textview,我们也可以自己定义一个layout,其中有textview,然后
将这个参数换成自己定义的布局,布局中的textview这两个参数,结果也是可以得。其实创建一个spinner大概可以分成下面四步:
1,创建数据源
2,创建Adapter
3,将数据源和Adapter连接起来
4,将Adapter和Adapterview连接起来。
但是现实情况下,我们不可能只用系统定义好的Adapter,我们还需要自定义Adapter,那么如何自定义Adapter呢?
自定义一个Adapter就需要先继承BaseAdapter,然后重写其中的方法,有getCount(),getItem(int arg0),getItemId(int arg0),getView(int arg0, View arg1,ViewGroup arg2),其中最重要的就是getview()方法,这个方法我还不是很理解,但是大概就是每次显示一个item时都需要调用这个
方法(因为还没有旧的view),当显示完了之后。如果屏幕移动了之后,并且导致有些Item(也可以说是view)跑到屏幕外面,此时如果还有新的
item需要产生,则这些item显示时调用的getview方法中的convertview参数就不是null,而是那些移出屏幕的view(旧view),我们所要做的就是
将需要显示的item填充到这些回收的view(旧view)中去,最后注意convertview为null的不仅仅是初始显示的那些item,还有一些是已经开始移
入屏幕但是还没有view被回收的那些item。同时在这个方法中,我们应该设置将数据源的数据显示在Adapterview上,因为这正是Adapter的功能,
然后写好Adapter后,我们在acivity中依然按照上面的四步写代码,这样一个自定义的Adapter和AdapterView就完成了。