Android中BaseColumns的用法是什么?

在Android中从BaseColumns实现类有什么BaseColumns

这是一个简单的界面,增加了两个字段:

 public interface BaseColumns { /** * The unique ID for a row. * <P>Type: INTEGER (long)</P> */ public static final String _ID = "_id"; /** * The count of rows in a directory. * <P>Type: INTEGER</P> */ public static final String _COUNT = "_count"; } 

Android中使用的内部sqlite数据库,带有一个自动增量的_id列,可以作为主键。 这也与ContentProviders良好的映射

BaseColumns接口提供了非常常见的_ID_COUNT列的名称。

使用通用名称,Android平台(以及开发人员)可以统一处理任何数据项,而不pipe其整体结构(即其他非ID列)。 在接口/类中为常用string定义常量可避免代码中的重复和拼写错误。

CursorAdapter需要使用名为_idBaseColumns._ID的常量值)的列, ContentProvider实现以及将Cursor BaseColumns._ID给Android平台的其他位置,以便为您执行操作。 例如, ListView的适配器使用_ID OnItemClickListener.onItemClick()您提供在OnItemClickListener.onItemClick()单击的列表项的唯一ID,而不必每次都明确指定您的ID列。

是否实现仅由常量组成的接口或者以全名(即BaseColumns._ID引用它们是一个BaseColumns._ID的事情。 我个人比较喜欢后者,因为更明显的地方是_ID来自前者,而前者感觉就像是对inheritance的滥用。

BaseColumn接口只提供列 _ID和_COUNT。 在构build表格时,您仍然必须指定使用它们的列。 例如,要使用列名_ID创build列,您可以执行以下操作:

 public static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" + _ID + " INTEGER PRIMARY KEY, " + USERNAME + " TEXT NOT NULL, " + PASSWORD + " TEXT NOT NULL, " + EMAIL + " TEXT NOT NULL UNIQUE)";