Android -- CursorAdapter

简介:

CursorAdapter                                                                       

CursorAdapter继承于BaseAdapter,它是个虚类,它为cursor和ListView提供了连接的桥梁。  

public abstract class CursorAdapter extends BaseAdapter

注意cursor的必须要有个命名为"_id"的列。比如Contacts._ID就为"_id"

必须实现以下函数:

abstract View newView(Context  context, Cursor  cursor, ViewGroup  parent)
    
abstract void  bindView(View  view, Context  context, Cursor  cursor)

newView该函数第一次回调用后,如果数据增加后也会再调用,但是重绘是不会调用的
数据增加后,回调用该函数来生成与新增数据相对应的view。
bindView函数第一次回调用后,如果数据更新也会再调用,但重绘会再次调用的

总的来说应该是在调用bindView如果发现view为空会先调用newView来生成view。

Code                                                                                   

复制代码
public class MySqliteOpenhelper extends SQLiteOpenHelper 
{                                                                    
    public MySqliteOpenhelper(Context context,  int version) 
    { 
        super(context, "dianhuaben.db", null, version); 
    } 
    @Override
    public void onCreate(SQLiteDatabase db) 
    {//注意:使用CursorAdapter时,创建表必须有以_id为列名的列 
        String sql = "CREATE TABLE dhb (_id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20),phone VARCHAR(20))"; 
        db.execSQL(sql); 
    } 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
    { 
    } 
}
复制代码
复制代码
public void createCursorAdapter(Cursor cursor) 
    { //游标适配器,构造方法,传入cursor 
        mAdapter = new CursorAdapter(this, cursor) 
        {//重写两个方法 
            @Override
            public View newView(Context context, Cursor cursor, ViewGroup parent) 
            {//找到布局和控件 
                ViewHolder holder = new ViewHolder(); 
                LayoutInflater inflater = getLayoutInflater(); 
                View inflate = inflater.inflate(R.layout.listview_item, null); 
                holder.item_tv_name = (TextView) inflate.findViewById(R.id.item_tv_name); 
                holder.item_tv_phone = (TextView) inflate.findViewById(R.id.item_tv_phone); 
                inflate.setTag(holder); 
                return inflate;//返回的view传给bindView。 
            } 
                                                              
            @Override
            public void bindView(View view, Context context, Cursor cursor) 
            {
//                把数据设置到界面上 
                ViewHolder holder = (ViewHolder) view.getTag(); 
                String name = cursor.getString(cursor.getColumnIndex("name")); 
                String phone = cursor.getString(cursor.getColumnIndex("phone")); 
                holder.item_tv_name.setText(name); 
                holder.item_tv_phone.setText(phone); 
            } 
                                                          
        }; 
                                                    
    };
复制代码

SimpleCursorAdapter                                                                

简单提及一下

复制代码
public void createSimpleCursorAdapter(Cursor cursor) 
    {// SimpleCursorAdapter继承了CursorAdapter继承了BaseAdapter 
        String[] from = {TABLE_NAME_NAME,TABLE_NAME_PHONE};//列名与控件id一一对应 
        int[] to = {R.id.item_tv_name,R.id.item_tv_phone}; 
        //用的是SimpleCursorAdapter,用法和simpleAdapter相似 
        mAdapter = new SimpleCursorAdapter(MainActivity.this, R.layout.listview_item, cursor, from, to); 
    }
复制代码

使用SimpleCursorAdapter,时,创建表必须有以_id为列名的列

我是天王盖地虎的分割线                     




本文转自我爱物联网博客园博客,原文链接:http://www.cnblogs.com/yydcdut/p/4090723.html,如需转载请自行联系原作者

相关文章
|
8天前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
13天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
15天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异和挑战
【10月更文挑战第37天】在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统扮演着主角。它们各自拥有独特的特性、优势以及面临的开发挑战。本文将深入探讨这两个平台在开发过程中的主要差异,从编程语言到用户界面设计,再到市场分布的不同影响,旨在为开发者提供一个全面的视角,帮助他们更好地理解并应对在不同平台上进行应用开发时可能遇到的难题和机遇。
|
17天前
|
XML 存储 Java
探索安卓开发之旅:从新手到专家
【10月更文挑战第35天】在数字化时代,安卓应用的开发成为了一个热门话题。本文旨在通过浅显易懂的语言,带领初学者了解安卓开发的基础知识,同时为有一定经验的开发者提供进阶技巧。我们将一起探讨如何从零开始构建第一个安卓应用,并逐步深入到性能优化和高级功能的实现。无论你是编程新手还是希望提升技能的开发者,这篇文章都将为你提供有价值的指导和灵感。
|
15天前
|
存储 API 开发工具
探索安卓开发:从基础到进阶
【10月更文挑战第37天】在这篇文章中,我们将一起探索安卓开发的奥秘。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和建议。我们将从安卓开发的基础开始,逐步深入到更复杂的主题,如自定义组件、性能优化等。最后,我们将通过一个代码示例来展示如何实现一个简单的安卓应用。让我们一起开始吧!