在Android中使用BaseColumns
实现课程有什么用?
答案 0 :(得分:63)
BaseColumns
界面提供了非常常见的_ID
和_COUNT
列的名称。
使用通用名称可以使Android平台(以及开发人员)以统一的方式处理任何数据项,无论其整体结构如何(即其他非ID列)。为接口/类中常用字符串定义常量可避免在整个代码中重复和拼写错误。
CursorAdapter
需要使用名为_id
的列(BaseColumns._ID
的常量值),ContentProvider
的实现以及您移交{{{}}的其他位置1}}到Android平台为你做的事情。例如,Cursor
的适配器使用ListView
列为您提供OnItemClickListener.onItemClick()
中单击的列表项的唯一ID,而无需您明确指定每个ID列的内容时间。
是否实施仅由常量组成的界面或引用它们的全名,即_ID
是一个品味问题。我个人更喜欢后者,因为BaseColumns._ID
来自哪里更为明显,前者感觉就像滥用继承。
答案 1 :(得分:34)
这是一个简单的界面,它添加了两个字段:
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
答案 2 :(得分:1)
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)";
答案 3 :(得分:0)
它是一个界面,看起来像这样
public interface BaseColumns
{
public static final String _ID = "_id";
public static final String _COUNT = "_count";
}
它包含用于SQL lite DB中自动递增的常量,例如id和count。
我们还可以为id创建自己的常量,而无需使用此特定接口。但是像游标适配器这样的函数需要像“ _id”这样的常量,因此最好使用提供的接口!
希望这可以帮助您!! :-)