微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android开发之Cursor怎么使用

这篇文章主要讲解了“Android开发之Cursor怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android开发之Cursor怎么使用”吧!

从Cursor获取数据的代码大致如下所示:

String uuidString = cursor.getString(

cursor.getColumnIndex(CriMetable.Cols.UUID));

String title = cursor.getString(

cursor.getColumnIndex(CriMetable.Cols.TITLE));

long date = cursor.getLong(

cursor.getColumnIndex(CriMetable.Cols.DATE));

int isSolved = cursor.getInt(

cursor.getColumnIndex(CriMetable.Cols.soLVED));

每从Cursor中取出一条crime记录,以上代码都要重复写一次。(这还不包括按照这些字段值创建Crime实例的代码。)

显然,遇到这种情况,我们应考虑到前面说过的代码复用原则。与其机械地编写重复代码

不如创建可复用的专用Cursor子类。使用CursorWrapper可快速方便地创建Cursor子类。顾名思义,CursorWrapper能够封装一个个Cursor的对象,并允许在其上添加新的有用方法

参照以下代码,在数据库包中新建CrimeCursorWrapper类。

创建CrimeCursorWrapper类(CrimeCursorWrapper.java)

public class CrimeCursorWrapper extends CursorWrapper {

public CrimeCursorWrapper(Cursor cursor) {

super(cursor);

}

}

可以看到,以上代码创建了一个Cursor封装类。该类继承了Cursor类的全部方法。注意,这样封装的目的就是为了定制新方法,以方便操作内部Cursor。

参照以下代码,新增获取相关字段值的getCrime()方法

新增getCrime()方法(CrimeCursorWrapper.java)

public class CrimeCursorWrapper extends CursorWrapper {

public CrimeCursorWrapper(Cursor cursor) {

super(cursor);

}

public Crime getCrime() {

String uuidString = getString(getColumnIndex(CriMetable.Cols.UUID));

String title = getString(getColumnIndex(CriMetable.Cols.TITLE));

long date = getLong(getColumnIndex(CriMetable.Cols.DATE));

int isSolved = getInt(getColumnIndex(CriMetable.Cols.soLVED));

return null;

}

}

我们需要返回具有UUID的Crime。在Crime.java中新增一个有此用途的构造方法,如下代码所示。

新增Crime构造方法(Crime.java)

public Crime() {

this(UUID.randomUUID());

mId = UUID.randomUUID();

mDate = new Date();

}

public Crime(UUID id) {

mId = id;

mDate = new Date();

}

最后,完成getCrime()方法,如下代码

新增getCrime()方法(CrimeCursorWrapper.java)

public Crime getCrime() {

String uuidString = getString(getColumnIndex(CriMetable.Cols.UUID));

String title = getString(getColumnIndex(CriMetable.Cols.TITLE));

long date = getLong(getColumnIndex(CriMetable.Cols.DATE));

int isSolved = getInt(getColumnIndex(CriMetable.Cols.soLVED));

Crime crime = new Crime(UUID.fromString(uuidString));

crime.setTitle(title);

crime.setDate(new Date(date));

crime.setSolved(isSolved != 0);

return crime;

return null;

}

(Android Studio会让你确定是选择java.util.Date还是java.sql.Date。不要搞错,即便我们现在是在编写数据库相关代码,也应该选java.util.Date。)

感谢各位的阅读,以上就是“Android开发之Cursor怎么使用”的内容了,经过本文的学习后,相信大家对Android开发之Cursor怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程之家,小编将为大家推送更多相关知识点的文章,欢迎关注!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐