我正在浏览Google IOSched应用的源代码,并注意到以下代码段作为其内容提供商实施的一部分:
public static class Blocks implements BlocksColumns, BaseColumns
。
据我所知BaseColumns只是两个常量的接口:_COUNT
和_ID
。
我有两个问题:
实施BaseColumns有哪些优点/缺点,而不是直接在类中使用私有字段_ID
?
常量_COUNT
的作用是什么?
答案 0 :(得分:23)
注意:提供者不需要拥有主键,也不需要 如果是主键,则需要使用_ID作为主键的列名 当下。但是,如果要将数据从提供程序绑定到 ListView,其中一个列名必须是_ID。这个要求是 在显示查询结果部分中有更详细的解释。
指南继续解释为什么需要primary key
提供的独特价值的基础知识,
表数据应始终具有提供者的“主键”列 维护为每行的唯一数值。你可以用它 将行链接到其他表中的相关行的值(将其用作 “外键”)。虽然您可以使用此列的任何名称 BaseColumns._ID是最佳选择,因为链接a的结果 对ListView的提供者查询需要一个检索到的列 名称为_ID。 [强调我的]
按照您提供的顺序回答您的问题:
_ID
列是多功能性的最佳实践。它不必显示,但作为主键(和外键!)非常有效,因为游标和查询是必需的。
_COUNT
is just the count of the number of rows in a directory.如果您的表的行被删除并添加,则没有理由相信某个项的_ID
整数与添加或排序时有任何关系属性。换句话说,last_insert_rowid()
不等于 Count()
。 _COUNT列只是提供了一种方法,用于显示查询返回的结果数,在该查询的每一行中。有关可视参考,请参阅linuxtopia.org 答案 1 :(得分:-3)
没有真正的理由使用它......您可以完全忽略它并使用您自己的_ID
和_COUNT
定义(如果您需要)...