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