android 自定义simplecursoradapter,android中使用CursorAdapter和SimpleCursorAdapter的方法

简单的例子说明一下,使用CursorAdapter读取数据库里,需要的数据,把它显示到listview上。

b3ab098c7a10862f2718360bc15b67ac.png

ListView数据来自数据库

CursorAdapter 继承了 BaseAdapter

好处:仅加载需要显示的数据,性能好

使用方法:

1.实现两个参数构造方法

2.重写newView()方法

layout->view

3.重写bindView()方法

view.set

数据更新:

adapter.changeCursor(cursor);

adapter.notifyDataSetChanged()

代码如下: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)

{

}

}

使用CursorAdapter的代码如下: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,简化了代码,同样达到如上的效果

SimpleCursorAdapter继承了CursorAdapter,用法类似SimpleAdapter。

代码如下: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为列名的列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值