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
需要使用名为_id
( BaseColumns._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)";