Что такое использование BaseColumns в Android - PullRequest
45 голосов
/ 26 октября 2011

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

Ответы [ 3 ]

63 голосов
/ 26 октября 2011

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

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

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

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

34 голосов
/ 26 октября 2011

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

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

1 голос
/ 01 апреля 2017

Интерфейс 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)";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...