Man*_*del 15 android android-contentprovider
我正在浏览Google IOSched App 的源代码,并注意到以下代码段作为其Content Provider实现的一部分:
public static class Blocks implements BlocksColumns, BaseColumns.
据我所知,BaseColumns只是两个常量的接口:_COUNT和_ID.
我有两个问题:
_ID与直接在类中拥有私有字段相比,实现BaseColumns有哪些优点/缺点?
常数的作用是_COUNT什么?
小智 23
根据Android开发者指南,
注意:提供者不需要拥有主键,并且如果存在主键,则不需要使用_ID作为主键的列名.但是,如果要将数据从提供程序绑定到ListView,则其中一个列名称必须为_ID.在显示查询结果部分中更详细地解释了此要求.
本指南继续解释为什么您需要提供独特价值的基础知识primary key,
表数据应始终具有"主键"列,提供程序将其维护为每行的唯一数值.您可以使用此值将行链接到其他表中的相关行(将其用作"外键").虽然您可以为此列使用任何名称,但使用BaseColumns._ID是最佳选择,因为将提供程序查询的结果链接到ListView需要其中一个检索到的列具有名称_ID. [强调我的]
按照您提供的顺序回答您的问题:
_ID色谱柱是多功能性的最佳实践.它不必显示,但作为主键(和外键!)非常有效,因为游标和查询是必需的.
_COUNT 只是目录中行数的计数.  如果正在删除并添加表的行,则没有理由相信项的_ID整数与添加它或其排序属性有关.换句话说,last_insert_rowid() 不等于 Count()._COUNT列只是提供了一种方法,用于显示查询返回的结果数,在该查询的每一行中.有关可视参考,请参阅linuxtopia.org| 归档时间: | 
 | 
| 查看次数: | 7268 次 | 
| 最近记录: |