[理学]关于android的adapter讲解

上传人:桔**** 文档编号:503005797 上传时间:2022-09-25 格式:DOC 页数:32 大小:208.81KB
返回 下载 相关 举报
[理学]关于android的adapter讲解_第1页
第1页 / 共32页
[理学]关于android的adapter讲解_第2页
第2页 / 共32页
[理学]关于android的adapter讲解_第3页
第3页 / 共32页
[理学]关于android的adapter讲解_第4页
第4页 / 共32页
[理学]关于android的adapter讲解_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《[理学]关于android的adapter讲解》由会员分享,可在线阅读,更多相关《[理学]关于android的adapter讲解(32页珍藏版)》请在金锄头文库上搜索。

1、Android开发说说Adapter那点事Adapter在Android中占据一个重要的角色,它是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。如图1直观的表达了Data、Adapter、View三者的关系。图1 Adapter、数据、UI三者关系(PS:此图来自Google I/O)一、Android中Adapter图2:Android中Adapter类型层级图由图2我们可以看到在Android中与Adapter有关的所有接口、类的完整层级图。在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的扩展。

2、比较常用的有 BaseAdapter,ArrayAdapter,SimpleCursorAdapter等。 BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性; ArrayAdapter支持泛型操作,通常需要实现getView方法,特殊情况下(结合数据row id),为了让ui事件相应处理方便点最好重写getItemId; SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。如需要实现更复杂的UI也可以重写其他方法。二、一个继承BaseAdapter的类的代码段 1: /* 2: *

3、歌曲列表适配器 3: * 4: * version 2010-11-24 下午05:13:33 5: * author Hal 6: */ 7: public class AudioListAdapter extends BaseAdapter 8: 9: private Context mContext; 10: 11: / 歌曲集合 12: private ArrayList mAudios; 13: 14: public AudioListAdapter(Context mContext, ArrayList mAudios) 15: this.mContext = mContext;

4、16: this.mAudios = mAudios; 17: 18: 19: Override 20: public int getCount() 21: return mAudios != null ? mAudios.size() : 0; 22: 23: 24: Override 25: public Object getItem(int position) 26: if (mAudios != null & mAudios.size() 0) & (position = 0 & position 0) & (position = 0 & position mAudios.size()

5、 38: return mAudios.get(position).getId(); 39: 40: return position; 41: 42: 43: Override 44: public View getView(int position, View convertView, ViewGroup parent) 45: /TODO 返回自定的View 46: Android如何使用simpleAdapter 使用simpleAdapter的数据用一般都是HashMap构成的List,list的每一节对应ListView的每一行。HashMap的每个键值数据映射到布局文件中对应id的

6、组件上。因为系统没有对应的布局文件可用,我们可以自己定义一个布局vlist.xml。下面做适配,new一个SimpleAdapter参数一次是:this,布局文件(vlist.xml),HashMap的 title 和 info,img。布局文件的组件id,title,info,img。布局文件的各组件分别映射到HashMap的各元素上,完成适配。效果图: 有按钮的ListView 但是有时候,列表不光会用来做显示用,我们同样可以在在上面添加按钮。添加按钮首先要写一个有按钮的xml文件,然后自然会想到用上面的方法定义一个适配器,然后将数据映射到布局文件上。但是事实并非这样,因为按钮是无法映射的

7、,即使你成功的用布局文件显示出了按钮也无法添加按钮的响应,这时就要研究一下ListView是如何现实的了,而且必须要重写一个类继承BaseAdapter。下面的示例将显示一个按钮和一个图片,两行字如果单击按钮将删除此按钮的所在行。并告诉你ListView究竟是如何工作的。效果如下:效果图:java代码:java代码:/* author allin*/public class MyListView4 extends ListActivity private ListMap mData;Overridepublic void onCreate(Bundle savedInstanceState)

8、super.onCreate(savedInstanceState);mData = getData();MyAdapter adapter = new MyAdapter(this);setListAdapter(adapter);private ListMap getData() ListMap list = new ArrayListMap();Map map = new HashMap();map.put(title, G1);map.put(info, google 1);map.put(img, R.drawable.i1);list.add(map);map = new Hash

9、Map();map.put(title, G2);map.put(info, google 2);map.put(img, R.drawable.i2);list.add(map);map = new HashMap();map.put(title, G3);map.put(info, google 3);map.put(img, R.drawable.i3);list.add(map);return list;/ ListView 中某项被选中后的逻辑Overrideprotected void onListItemClick(ListView l, View v, int position, long id) Log.v(MyListView4-click, (String)mData.get(position).get(title);/* listview中点击按键弹出对话框*/public void showInfo()new AlertDialog.Builder(this).setTitle(我的listview).setMessage(介绍

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号