簡體   English   中英

Android中BaseColumns的用途是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM