(1)ListView
ListView(API)是一个AdapterView,它以列表的形式在Android上表现数据.
Adapter它是一个适配器,是一个常见的ViewGroup容器,在这个容器中通常要借组一个适配器对象来加载数构建Item然后显示这些Item.
基本上以上API都会用到这样的适配器,而且基本的原理是一样的.
ListView与Adapter
ListView主要负责以列表的形式显示数据,并根据需要从Adapter中获取列表项;
Adapter主要负责获取数据,并将数据加工为列表项指定的表现形式,供ListView提取.
通常我们指一个列表项为一个ItemView,一个ListView中可以有很多个ItemView.
通过使用Adapter,可以让ListView不用关心列表项中的数据是怎么来、如何将这些数据添加到列表项中去等等问题,这样实现了数据与表现之间的低耦合.
即同一个ListView控件匹配不同的Adapter则可以显示不同内容与样式,而同一个Adapter也可以为多ListView或其他的AdpaterView而使用
显示一个ListView需要的基本条件
- ListView控件:用于以列表的形式显示数据
- 数据源:需要被显示的数据
- Adapter(适配器):按需获取数据源中的数据,创建每一条显示的ItemView(列表项),并添加到ListView中(让ListView与Adapter)
关联. - 列表项中的布局文件(Xml)
(2)ArrayAdapter
ArrayAdapter是简单的显示文字列表的Adapter,使用ArrayAdapter
时,ListView的每一个列表项,仅能显示一条文字信息.
ArrayAadapter传入的参数的说明
ArrayAdapter adapter = new ArrayAdapter(Context context,int TextViewResourceId,List<T> Objects);
Context context:上下问对象(MainActivity.this),一般都只写this.
int TextViewResourceId:列表项的布局文件的资源ID,该布局文件必须是以TextView为根节点.一般我们可以用自定义的布局和Android官方给的布局.
List<T> Objects:数据源,一般数据源可以定义在内部也可以定义在外部.
AarrayAdapter代码实例流程
//1.获取ListView控件
ListView lv=(ListView)findViewById(R.id.lv);
//2.构建ArrayAdapter对象,并往ArrayAdapter对象中传入参数
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_expandable_list_item_1,
new String[]{"A","B","C","D","E"});
//3.关联Adapter
lv.setAdapter(adapter);
(3)SimpleAdapter
较之ArrayAdapter,使用SimpleAdapter的显示效果更加丰富,列表项不再收到限制,即每个列表项可以包括多个显示控件,不仅仅局限于TextView.
SimpleAdapter的基本使用
在使用SimpleAdapter时,数据源必须是List<?extends Map<String,?>>格式,在List内部的每一个Map对象保存一条列表项数据,在Map中的key为提取出数据的依据,Value为被提取的数据
根据应用到的控件不同,该Map中的Value的意义有所区分,例如应用到TextView中时,该Value将直接作为文字显示,应用到ImageView时,该Value则可以被作为图片的资源ID.
SimpleAdapter构造方法参数
SimpleAdapter adapter = new SimpleAdapter(
Content content,
List<?extends Map<String,?>>,
R.layout.simpleactivity,
String[] form,
int[] to);
Content content:上下文对象
List<?extends Map<String,?>>:数据源
int Resource:列表项的布局文件的资源ID,该布局最好为自定义ID
String[] form:数据源中Map的key的数组
int[] to:显示数据的控件的资源ID,这些资源ID必须被第三个参数表示的的布局文件中定义,且数量、顺序必须与第四个参数保持一致.
网友评论