[英]What is the use of BaseColumns in Android
在Android中使用BaseColumns
实现类有什么用?
BaseColumns
接口提供了非常常见的_ID
和_COUNT
列的名称。
使用通用名称使Android平台(以及开发人员)能够以统一的方式处理任何数据项,而不管其整体结构(即其他非ID列)。 为接口/类中常用字符串定义常量可以避免在整个代码中重复和拼写错误。
CursorAdapter
需要使用名为_id
的列( BaseColumns._ID
的常量值), ContentProvider
实现以及将Cursor
BaseColumns._ID
给Android平台以便为您执行操作的其他位置。 例如, ListView
的适配器使用_ID
OnItemClickListener.onItemClick()
您提供在OnItemClickListener.onItemClick()
单击的列表项的唯一ID,而无需每次都明确指定ID列。
是否实现仅由常量组成的接口或以其全名引用它们,即BaseColumns._ID
是一个品味问题。 我个人更喜欢后者,因为_ID
来自哪里更明显,前者感觉就像滥用继承。
这是一个简单的界面,它添加了两个字段:
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
BaseColumn接口仅提供列名 _ID和_COUNT。 在构造表时,您仍必须指定使用它们的列。 例如,要使用列名_ID创建列,您可以执行以下操作:
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)";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.