Adapter是把数据和用户界面视图绑定到一起的桥梁类,负责创建用来表示父视图中的每一个条目的子视图,并提供对底层数据的访问。

public class MainActivity extends Activity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); ListView toDoListView = (ListView)findViewById(R.id.toDolistView); final ArrayList<String> todoItems = new ArrayList<String>();
// final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, todoItems); int resID = R.layout.todolist_item;
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, resID, todoItems); //将adapter绑定到listView
toDoListView.setAdapter(adapter);
}
}
//若是复杂对象的数组,数据的显示需要定制的话则重写adapter的geView方法
abstract public class MyListAdapter<T> extends BaseAdapter { private int listCellId; public MyListAdapter(Context context, int resId, List<T> items) {
super(context, resId, items);
listCellId = resId;
} @Override
public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(listCellId, null);
} ((TextView)(convertView)).setText((String)getItem(position)); return convertView;
} }

iOS的tableView使用

@implementation ContactsViewController

- (id)init
{
if (self = [super init]) { contactTable = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
contactTable.frame = CGRectMake(, , self.view.bounds.size.width, self.view.bounds.size.height);
contactTable.delegate = self;
contactTable.dataSource = self;
[self.view addSubview:contactTable];
}
return self;
} - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *identifier = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; if (!cell)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
} cell.textLabel.text = [[_contactList objectAtIndex:indexPath.row] objectForKey:PersonName];
cell.detailTextLabel.text = [[_contactList objectAtIndex:indexPath.row] objectForKey:PersonTel]; return cell;
} - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSLog(@"%d",_contactList.count);
return _contactList.count;
}

iOS与Android的table使用区别:

iOS在viewController中定义一个数组成员变量,将viewController设置为tableView的dataSource对象,然后在cellForRowAtIndexPath中创建或复用UI,并将数组成员变量根据行位置读取相应数据后将其更新到UI。

Android在activity中定义一个数组变量存放数据,利用该数组、activity的context、cell(子视图)的样式(xml)资源创建一个adapter,将该adapter设置为listView的adapter属性,然后在adapter的getView方法中根据样式资源ID创建UI,并利用position和getItem方法将底层数组对应行的对象读出并更新到UI上。

Adapter就相当于tableViewController,listView或tableView的一些关键回调都在它们中实现,但一些tableViewController中集成的viewController方法,在Adapter中则没有集成上Activity的方法,还是由listView所在的Activity中完成(Adapter和Activity本身类都不一致)。

即Adapter只完成和listView有关的回调。

SimpleCursorAdapter

SimpleCursorAdapter是通过传入当前上下文、一个布局资源、一个Cursor和两个数组进行构建的,这两个数组一个包含了要使用的列的名称,一个存储了用了显示相应列的数据值的视图资源ID。Cursor是指每行的集合。SimpleCursorAdapter可把一个布局中指定的视图和内容提供器查询返回的游标列绑定到一起。

String uriString = "content://contacts/people";
Cursor myCursor = managedQuery(Uri.parse(uriString), null, null, null);
String[] fromColumns = new String[] {People.NUMBER, People.NAME};
int[] toLayoutIDs = new int[] {R.id.nameTextView, R.id.numberTextView}; SimpleCursorAdapter myAdapter;
myAdapter = new SimpleCursorAdapter(this, R.layout.simplecursorlayout, myCursor, fromColumns, toLayoutIDs);
myListView.setAdapter(myAdapter);

 

android-适配Adapter的更多相关文章

  1. Android之Adapter用法总结-(转)

    Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid Vie ...

  2. Android之Adapter用法总结(转)

    Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid Vie ...

  3. Android之Adapter用法总结

    http://blog.csdn.net/fznpcy/article/details/8658155 Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器 ...

  4. Android中Adapter之BaseAdapter使用

    Android界面中有时候需要显示稍微复杂的界面时,就需要我们自定义一个adapter,而此adapter就要继承BaseAdapter,重新其中的方法.         Android中Adapte ...

  5. 【转】Android各种Adapter的用法

    转自:http://my.oschina.net/u/658933/blog/372151 Android各种Adapter的用法 发表于5个月前(2015-01-27 10:56)   阅读(143 ...

  6. 【转】Android自定义Adapter的ListView的思路及代码

    原文网址:http://www.jb51.net/article/37236.htm Android自定义Adapter的ListView的思路及代码,需要的朋友可以参考一下   在开发中,我们经常使 ...

  7. Android ListView Adapter的getItemViewType和getViewTypeCount多种布局

     <Android ListView Adapter的getItemViewType和getViewTypeCount多种布局> 在Android的ListView中.假设在一个Lis ...

  8. Android中Adapter总结

    根据一个制作列表的程序开始练手,结果就出现了学习安卓的第一个代码问题 运行程序发现,虽然报错,但是可以成功运行程序. Android中Adapter功能为 显示ListView,最常用的有ArrayA ...

  9. Android 适配(一)

    一.Android适配基础参数 1.常见分辨率(px)      oppx 2340x1080      oppR15 2280x1080      oppor11sp 2160*1080       ...

  10. android适配全机型悬浮框、视频APP项目、手势操作、Kotlin妹子App、相机图片处理等源码

    Android精选源码 图片滤镜处理,相机滤镜实时处理,相机拍照录制 android仿爱壁纸App更换壁纸效果源码 基于Kotlin+MVP+Retrofit+RxJava+Glide 等架构实现短视 ...

随机推荐

  1. JavaScript引用类型之Array数组的拼接方法-concat()和截取方法-slice()

    1.concat()   基于当前数组中的所有项创建一个新数组(也就是副本),然后将接收到的参数添加到副本的末尾,最后返回新构建的数组.也就是说,concat()在向数组中追加元素时,不会改变原有数组 ...

  2. sql两表联合查询

    SELECT yt_fault_componentId FROM yt_fault_component a join yt_fault_assembly b on a.yt_fault_assembl ...

  3. T-SQL 基于关系分割字符串

    今天晚上学习了下 SQL 基于关系的运算,同时也捉摸着写了个例子,虽然我知道性能不是很好,还有待优化.直接上源代码吧,思路表达出来有点困难,直接贴上代码,如果有人不懂得可以MM 我. declare ...

  4. PDF417码制尺寸定义

    PDF417码制尺寸定义         1.模块宽度(X)不得小于0.191mm,你们目前所用300dpi打印机点的尺寸是0.084 mm * 0.01 mm,可  三倍以上值        2.条 ...

  5. NSURLConnect 的简单实用(iOS8淘汰)

    Demo_1 NSRULConnection NSRULConnection 苹果公司在ios8已经抛弃了,但是我还是要讲一下,因为这和后面的NSSession有着密切的联系 下面开始使用步骤: 1. ...

  6. Java socket字节流传输的示例

    服务端server端: package com.yuan.socket; import java.io.*; import java.net.ServerSocket; import java.net ...

  7. 【转载】谈谈Cookie

    0×00 引言 在Web技术的发展史上,Cookie技术的出现是一次重大的 变革.但是, Cookie技术又是一项非常有争议的技术,从它诞生之日起就成了广大网络用户和Web开发人员的一个争论焦点,原因 ...

  8. ASPから広がり

    ASP是动态服务器页面(Active Server Page)外语缩写.[1]是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单.方便的编程工具.ASP的网页文 ...

  9. windows server system32下常见快捷指令

    win+R       命令行窗口 cmd        dos命令窗口 mstsc      远程登录输入窗口 calc         快速打卡计算器 control     打开控制面板 eve ...

  10. karma note

    karma 简介 karma不是一个测试框架,仅仅是启动了一个httpServer karma仅仅是一个跑测试的平台(runner), 我们可以使用各种测试框架, 如: Jasmine Mocha Q ...