2011-10-26 27 views

cevap

32

Bu iki alan ekler basit bir arayüz. Bu, ContentProviders

62

BaseColumns arabirimi, çok yaygın olan _ID ve _COUNT sütunlarına ilişkin adlar sağlar. Ortak adların kullanılması, Android platformunun (ve geliştiricilerin), genel yapısına (yani, diğer ID olmayan sütunlara) bakılmaksızın, birleşik bir şekilde, herhangi bir veri öğesini ele almasını sağlar. Bir arabirim/sınıftaki yaygın olarak kullanılan dizeler için sabitlerin tanımlanması, kodun tümünde yineleme ve yazım hatalarını önler. _id adlı bir sütun (BaseColumns._ID sabit değer) kullanarak

CursorAdapter gerektirdiği, sizin için şeyler yapmak için Android platformu için Cursor bırakabileceğini bir ContentProvider ve başka yerlerde uygulamaları. Örneğin, ListView bağdaştırıcısı, OnItemClickListener.onItemClick() içinde tıklatılan liste öğesinin benzersiz kimliğini size vermek için _ID sütununu kullanır; kimliğinizin ne olduğunu açıkça belirtmenize gerek kalmadan.

olsun ya da olmasın sadece sabitlerini içeren arayüzleri ya da tam adıyla başvuru onları, yani BaseColumns._ID tat meselesidir uygulamak. Ben kişisel olarak onu tercih eder, çünkü _ID'un nereden geldiğini ve eskiden kalıtımın kötüye kullanıldığını düşünür. Android kullanılan

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"; 
} 

Dahili olarak sqlite veritabanları birincil anahtar olarak işlev görebilir autoincrements ve _id kolonu ile gelir:

+0

** thnx ** yüzden biz tablonun (yani birincil anahtar) id getirmesi gerek olmadığı anlamına gelir, BasicColumns._ID –

+0

adresinden edinilebilir. "SELECT" sorgularınızda ID sütununu getirmeniz gerekiyor, 'BaseColumns._ID' sadece bu ID sütununun * adını * tanımlar. Birincil kimlik sütununun adı ne olursa olsun –

+0

, sorgu derlemesinde BaseColumns._ID tarafından değiştirilir. doğru mu? –

1

ile de iyi eşleşir. BaseColumn arabirimi, yalnızca adları _ID ve _COUNT sütunlarını sağlar. Tabloları oluştururken bunları kullanmak için sütunlar belirtmeniz gerekir. Örneğin, aşağıdakileri yapmanız olabilir _ID sütun adını kullanarak bir sütun oluşturmak için:

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)"; 
İlgili konular