Что такое использование BaseColumns в Android?

Какая польза от внедрения класса из BaseColumns в Android?

Это простой интерфейс, который добавляет два поля:

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

Внутренние базы данных sqlite, используемые в Android, поставляются с столбцом _id который автоинкрементируется и может функционировать как первичный ключ. Это также хорошо ContentProviders на ContentProviders

Интерфейс BaseColumns предоставляет имена для очень общих _ID и _COUNT .

Использование общих имен позволяет платформе Android (и разработчикам) обращаться к любому элементу данных независимо от общей структуры (то есть других столбцов без идентификатора) унифицированным способом. Определение констант для часто используемых строк в интерфейсе / классе исключает повторение и опечатки по всему коду.

Использование столбца с именем _id (постоянное значение BaseColumns._ID ) требуется CursorAdapter , реализация ContentProvider и других мест, где вы CursorAdapter Cursor на платформу Android, чтобы делать что-то для вас. Например, адаптер ListView использует столбец _ID чтобы дать вам уникальный идентификатор элемента списка, OnItemClickListener.onItemClick() в OnItemClickListener.onItemClick() , без необходимости явно указывать, какой столбец идентификатора будет каждый раз.

Нужно ли реализовать интерфейсы, состоящие только из констант или ссылающиеся на их полное имя, то есть BaseColumns._ID – дело вкуса. Я лично предпочитаю последнее, потому что это более очевидно, где _ID исходит, и первое похоже на злоупотребление наследованием.

Интерфейс 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)"; 
Intereting Posts