(纯粹是个人学习笔记,目前处于初级阶段,望得高人指点,布局以及图片方面都是随意设置的)
ListView列表的显示需要三个元素:
1.ListView
2.适配器 用来把数据映射到ListView上的中介
3.数据 具体的将被映射的字符串,图片,或者基本组件
效果如图:
A,说一下这个布局,这是主布局,很简单
<LinearLayout orientation=vertical>//这是简写
<TextView text=结算/>
<ImageButton id=but/>
<TextView text=商品列表:/>
<LinearLayout>
<ListView id=list/>
</LinearLayout>
</LinearLayout>
然后需要在添加一个布局文件 list_xml,如下:
<LinearLayout orientation=horizontal>
<ImageView id=Image/>
<LinearLayout orientation=vertical>
<TextView id=title text=商品名称>
<TextView id=name>
</LinearLayout>
<CheckBox id=check/>
<Button id=detail />
</LinearLayout>
B,接下来看源程序 主源程序:
这里name数组存放的是显示在list_xml里的id为name的textView上的数据
imageId里面存放的都是图片,将显示字啊id为image的ImageView上
onCreate函数里的思路是
1,找到控件 findViewById
2,获取数据,GetListItems();
3,设置适配器
这个函数就定义在onCreate函数下面,
将字符串数据和图片资源添加到数据集中,这些数据和前面的字符串相对应,而数据集交给适配器后,数据的匹配就是根据这些字符串来进行的,这些字符串应该是控件 id,这样适配器就能根据字符串找到对应的Id控件,并把资源交给控件。
C,再来看适配器:
这里新建了一个Java适配器类 ListViewAdapter它继承BaseAdapter类,在这个新建类中
最关键的函数是getView()
看一下ListViewAdapter类:
1,构造函数,创建容器并设置上下文联系,获取传过来的数据集
2,定义模版类(这是我自己的叫法,即定义listView上的所有控件,不一定要定义所有,比如title就在布局文件里直接它设置了string,个人观点,未尝试)
3,getCount()获取数据集的大小,listView将按这个数据显示有多少行数据
getItem()获取数据集里的数据,arg0是数据位置,可以把这个arg0改为position,
getItemId()获取数据位置
再看关键的getView():
该函数的思路很清晰,定义一个listView对象,用于绑定控件v.setTag(view);就是将控件与listView对接,以实现在界面上显示list_xml布局里的控件
即:传进一个View,绑定,配置数据,然后传出给界面。
二 Android Gallery笔记
A,了解Gallery:
一般情况下,我们在Android中要用到类似这种图片容器的控件,都需要为它指定一个适配器,让它可以把内容按照我们定义的方式来显示,因此我们来给它加一个适配器,至于这个适配器如何实现,这个适配器的类叫ImageAdaptergallery.setAdapter(new ImageAdapter(this)); ImageAdapter
继承BaseAdapter,其实gallery的适配和上面的listView适配是一样的
B,准备图片(注意图片大小不要太大否则会影响程序运行速度)
看一下整个程序的代码吧:
梳理一下结构:(所有代码都在onCreate函数里)
1,准备图片资源
2,,创建Gallery对象,创建ImageSwitcher对象,并找到。
3,设置ImageSwitcher工厂
4,创建适配器
5,Gallery设置适配器
6,设置OnItemSelectedListener
看一下运行截图:
上面是ImageSwitcher,下面是Gallery,如果没有设置OnItemSelectedListener则ImageSwitcher不显示任何东西,设置ImageSwitcher工厂的作用就是控制图片在ImageSwitcher上显示的方式
重点在适配器BaseAdapter adapter看一下适配器:
这里的和上面的ListView的适配器很相似,还是主要看getView函数,这里略微与ListView里的getView有些不同,这里返回的不是getView的参数v,而是ImageView,在ListView中返回的是v,,但适配器的用法都一样 传View,适配数据,返回View
这里指出几个重点函数,setImageResourse();这个函数是把图片给的View