Android中BaseColumns的用途是什么?

Sha*_* A. 46 java database sqlite android

BaseColumns在Android 中实现类有什么用?

Phi*_*art 63

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

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

使用名为_id(常量值BaseColumns._ID)的列,需要CursorAdapter执行以及将ContentProviderCursor交给Android平台为您执行操作的其他位置.例如,a的适配器ListView使用该_ID列为OnItemClickListener.onItemClick()您提供单击的列表项的唯一ID ,而无需每次都明确指定ID列.

是否实现仅由常量组成的接口或用它们的全名引用它们,即BaseColumns._ID是品味问题.我个人更喜欢后者,因为它_ID来自哪里更明显,而前者感觉就像滥用继承.

  • 好的,但是_COUNT是什么,'目录中的行数'? (5认同)
  • `BaseColumns._ID`的值,即字符串``_id'`,*是*主ID列的名称; 如果要将它与`CusorAdapter`,`ContentProvider`,`ListView`等一起使用,则主ID列不能有任何其他名称. (3认同)
  • @Maarten"每个提供者也可以报告作为_COUNT列返回的记录数;它的值对于所有行都是相同的." 来自http://www.linuxtopia.org/online_books/android/devguide/guide/topics/providers/content-providers.html的"查询返回"部分 (2认同)

Ren*_*eno 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";
}
Run Code Online (Sandbox Code Playgroud)

在Android中使用的内部sqlite数据库附带一个 _id自动增量并可用作主键的列.这也很好地映射了ContentProviders