android中 List、Map简单介绍及ArrayAdapter、SimpleAdapter、BaseAdapter简单总结

~~~~我的生活,我的点点滴滴!!



List(列表): 



List的特征是其元素以线性方式存储,集合中可以存放重复的对象,他是一个接口类,他的主要实现类包括ArrayList、LinkedList、Stack、Vector

我们说说常用三个:

1、ArrayList: 代表长度是可以改变的数组,可以对元素进行随机的访问,向ArrayList()中插入与删除元素的速度慢。他只适合随机查找、遍历,快速访问等。

2、Vector: 也是通过数组实现的,他和ArrayList基本一样的,唯一的区别是他支持线程的同步,即某一时刻只有一个线程能写Vector(自带加锁与解锁功能),

但是线程同步是需要代价的,因此他访问比ArrayList要慢。

3、LinkedList: 在实现中采用链表数据结构,插入和删除速度快,访问速度慢,另外他还提供了List接口中没有定义的方法,专门用于操作表头和表尾元素,

可以当作堆栈、队列和双向队列使用。

注意:对于Vector与ArrayList,当发现数组的大小不够用的时候,需要重新建立数组,然后将元素拷贝到新的数组内,所以他们的代价还是蛮大的,默认他们
的扩展空间如下:

a、ArrayList在内存不足时默认扩大50%+1个。

b、Vector默认扩大100%即1倍。

但是对于Stack,看源码就知道他不属于List的直接实现类,所以对于Stack可以直接使用 Stack stack = new Stack();

所以对于List的对象,我们的new的时候,要选择使用上面两种中的一种来生成相应的容器。

例如:

List<String> listItems = new ArrayList<String>();

对List的的随机访问来说,就是只随机来检索位于特定位置的元素,List的get(int index)方法获取集合中index参数的位置对象,下标是从0开始的,

最基本的两种检索集合中的所有对象的方法:


1、for+get方法

for(int i = 0; i < list.size(); ++ i)
{
	System.out.println(list.get(i));
}


2、Iterator迭代器

Iterator it = list.iterator();


while( it.hashNext )
{
	System.out.println(it.next);
}


ps:具体的函数接口及使用方法可以看源码或帮助文档。



Map(映射):



Map 是一种把健对象和值对象映射的集合,它的每一个元素都包括一对健对象和值对象,他是接口类,常用的实现类有HashMap、TreeMap、LinkedHashMap:


HashMap:基于散列表的实现,插入与查询的开销是常量级,操作很快。


LinkedHashMap: 类似于HashMap,他在迭代遍历时,取得键值对的顺序是他插入时的顺序,比HashMap要慢一点。


TreeMap:基于红黑树实现的,这个才是对应于C++ STL中的Map,TreeMap是默认根根据键值排序的,速度快。


简单的介绍就到此为止,因为我主要是想知道和C++ 中的一些区别与熟悉一下java中的容器,详细介绍和使用样例见下面的链接:


http://www.cnblogs.com/littlehann/p/3690187.html


相当全面。




SimpleAdapter



SimpleAdapter是一个简单的适配器,可以将静态数据映射到XML文件中定义好的视图。


SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)


参数说明:


context: SimpleAdapter关联的View的运行对象


data: 一个Map组成的List数据结构,在列表中的每个条目对应列表中的一行,每一个Map中应该包含所有在from参数中指定的键(Key)


resource: 一个定义列表项的布局文件的资源ID,布局文件将至少包含那些在to中定义的ID


from: 一个将被添加到Map映射上的键名(key)


to: 将绑定数据的视图的ID(map中的value),跟from对数对应,并且应该是view


在ListView中使用样例:


List< Map<String, Object> > listItems = new ArrayList< Map<String, Object> >();
    	
for( int i = 0; i < files.length; ++ i )
{
	Map<String, Object> itemMap = new HashMap<String, Object>();
	
	if( files[i].isDirectory() )
	{
		itemMap.put("icon", R.drawable.folder);
	}
	else if( files[i].isFile() )
	{
		itemMap.put("icon", R.drawable.file);
	}
	itemMap.put("fileName", files[i].getName());
	listItems.add(itemMap);
}


SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems, R.layout.line, 
		     new String[]{"icon", "fileName"}, new int[]{R.id.icon, R.id.file_name});


listView.setAdapter(simpleAdapter);


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android StudioArrayAdapterSimpleAdapter都是常用的适配器类,用于将数据源与UI控件进行绑定。下面我来分别介绍一下这两个适配器类的使用方法。 ### ArrayAdapter ArrayAdapter是一个简单的适配器,它可以将一个数组或List的数据与ListView等UI控件进行绑定。使用ArrayAdapter时,需要创建一个包含数据的数组或List,并将其传入ArrayAdapter的构造函数,然后将ArrayAdapter设置到对应的UI控件即可。 下面是一个简单的使用ArrayAdapter的示例代码: ```java String[] data = {"apple", "banana", "orange", "pear"}; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data); ListView listView = (ListView) findViewById(R.id.list_view); listView.setAdapter(adapter); ``` 在上面的代码,我们创建了一个包含4个字符串的数组data,然后将其传入ArrayAdapter的构造函数,同时指定了一个简单ListView的布局文件`android.R.layout.simple_list_item_1`,最后将ArrayAdapter设置到ListView。 ### SimpleAdapter SimpleAdapter是一个稍微复杂一些的适配器,它可以将一个ListMapListView等UI控件进行绑定。使用SimpleAdapter时,需要创建一个包含多个MapList,并将其传入SimpleAdapter的构造函数,然后将SimpleAdapter设置到对应的UI控件即可。 下面是一个简单的使用SimpleAdapter的示例代码: ```java List<Map<String, Object>> data = new ArrayList<Map<String, Object>>(); Map<String, Object> map1 = new HashMap<String, Object>(); map1.put("name", "apple"); map1.put("image", R.drawable.apple); data.add(map1); Map<String, Object> map2 = new HashMap<String, Object>(); map2.put("name", "banana"); map2.put("image", R.drawable.banana); data.add(map2); Map<String, Object> map3 = new HashMap<String, Object>(); map3.put("name", "orange"); map3.put("image", R.drawable.orange); data.add(map3); Map<String, Object> map4 = new HashMap<String, Object>(); map4.put("name", "pear"); map4.put("image", R.drawable.pear); data.add(map4); SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item_simple_adapter, new String[]{"name", "image"}, new int[]{R.id.tv_name, R.id.iv_image}); ListView listView = (ListView) findViewById(R.id.list_view); listView.setAdapter(adapter); ``` 在上面的代码,我们创建了一个包含4个MapList,每个Map包含两个键值对(name和image),分别对应水果的名称和图片资源的ID。然后将List传入SimpleAdapter的构造函数,同时指定了一个ListView的布局文件`R.layout.item_simple_adapter`,以及将name和image映射到ListView的两个控件(tv_name和iv_image)上。 总的来说,ArrayAdapterSimpleAdapter都是非常实用的适配器类,用于将数据源与UI控件进行绑定。在实际开发,我们可以根据具体的需求来选择使用哪个适配器类。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值