android-适配Adapter

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(0, 0, 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有关的回调。

时间: 2024-08-30 08:02:54

android-适配Adapter的相关文章

Android之Adapter用法总结

http://blog.csdn.net/fznpcy/article/details/8658155 Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid View)等地方都需要用到Adapter.如下图直观的表达了Data.Adapter.View三者的关系: Android中所有的Adapter一览: 由图可以看到在Android中与Adapter有关

Android之Adapter用法总结(转)

Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid View)等地方都需要用到Adapter.如下图直观的表达了Data.Adapter.View三者的关系: Android中所有的Adapter一览: 由图可以看到在Android中与Adapter有关的所有接口.类的完整层级图.在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的扩展.比较常用

Android常用Adapter用例(二)

Android适配器之-----SimpleAdapter 结构 继承关系 public interface SpinnerAdapter extends Adapter java.lang.Object android.widget.BaseAdapter android.widget. SpinnerAdapter 类概述 这是一个简单的适配器,可以将静态数据映射到XML文件中定义好的视图.你可以指定数据支持的列表如ArrayList组成的Map.在ArrayList中的每个条目对应List

Android之Adapter用法总结-(转)

Android之Adapter用法总结 1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid View)等地方都需要用到Adapter.如下图直观的表达了Data.Adapter.View三者的关系: Android中所有的Adapter一览: 由图可以看到在Android中与Adapter有关的所有接口.类的完整层级图.在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的扩展.比较常用

Android适配器之DataModifyHelper数据操作类的封装

编写适配器代码时常常被以下几个问题所困扰: 1.业务层和适配器中对同一组数据进行维护,难以管理 2.在业务层针对数据进行修改后必须通知适配器更新,否则提示The content of the adapter has changed but ListView did not receive anotification 3.业务层修改数据时充斥大量的非空&数据标准化等冗余代码 针对前两个问题,可以将数据交由适配器去管理,业务层对数据的增删改查均通过适配器进行处理,这样仅需要维护好adapter中的数

Android的Adapter用法总结

Android之Adapter用法总结 1.Adapter概念 定义为将一个类的接口变换成客户端所期待的一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 在android中我们可以这么看, Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid View)等地方都需要用到Adapter.如下图直观的表达了Data.Adapter.View三者的关系: Android中所有的Adapte

Android适配方案小结(三)

在Android适配方案小结(一).(二)中,我们了解了一些基本概念. 那么在具体开发中,我们应该注意什么呢. 首先,我们必须要知道,其实适配的关键在于两点: (1)不同分辨率设备的适配,这点在单位的使用上用dp.sp以及图片资源存放于不同的drawable文件夹就可以解决问题: (2)不同尺寸的适配,这点主要靠将相关值以及布局文件放置于不同的文件夹中来解决. 2.1 values文件夹 可以在工程下创建不同的values文件夹:values-sw480dp, values-sw600dp, v

Android技术18:Android中Adapter类详解

1.Adapter设计模式 Android中adapter接口有很多种实现,例如,ArrayAdapter,BaseAdapter,CursorAdapter,SimpleAdapter,SimpleCursorAdapter等,他们分别对应不同的数据源.例如,ArrayAdater对应List和数组数据源,而CursorAdapter对应Cursor对象(一般从数据库中获取的记录集).这些Adapter都需要getView方法返回当前列表项显示的View对象.当Model发生改变时,会调用Ba

Android 自定义Adapter 但listview 只显示第一条数据

楼主让这个问题郁闷了一晚上.....在logcat里明明显示adapter的getview方法里的list大于一条数据 ,但posotion却一直是0.....运行后也只显示list[0]里面的数据....最后的最后原来错误出在布局文件上 我以前的是这样的; <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" > <!-- listv

Android 自定义Adapter实现多视图Item的ListView

自定义Adapter实现多视图Item的ListView http://www.devdiv.com/adapter_item_listview-blog-20-7539.html Android 自定义Adapter实现多视图Item的ListView,布布扣,bubuko.com