2013-05-10 3 views
0

Рассмотрим:Переменные базы данных ContentProvider, куда их поместить?

public static final String NOTE_ID = "_id"; 
public static final String TITLE = "title"; 
public static final String TEXT = "text"; 

3 столбцов в моей базе данных SQLite, указанные выше для использования в контент-провайдера, где я помещаю их в коде ниже? где лучшее место?

и что я должен поместить в класс NoteItems, который расширяет BaseColumns?

немного смущенно о том, где положить что.

public class ProviderExample extends ContentProvider { 

private static final String DATABASE_NAME = "notes.db"; 
private static final int DATABASE_VERSION = 1; 
private static final String TABLE_NAME = "notes"; 
public static final String AUTHORITY = "package com.example.contentproviderexample.providerexample"; 

public static final UriMatcher sUriMatcher; 

private static final int NOTES = 1; 

private static final int NOTES_ID = 2; 

public static final Uri CONTENT_URI = Uri.parse("content://" 
     + AUTHORITY + "/notes"); 

    static final String SINGLE_RECORD = "vnd.android.cursor.item/vnd.example.providerexample"; 
    static final String MULTIPLE_RECORDS = "vnd.android.cursor.dir/vnd.example.providerexample"; 

static { 
     sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH); 
     sUriMatcher.addURI(AUTHORITY, TABLE_NAME, NOTES); 
     sUriMatcher.addURI(AUTHORITY, TABLE_NAME + "/#", NOTES_ID); 
    } 

    public static interface NoteItems extends BaseColumns { } 

    private static class DatabaseHelper extends SQLiteOpenHelper{ 
    DatabaseHelper(Context context) 
    { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) {} 

    @Override 
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { 
     // TODO Auto-generated method stub 
    } 
} // DatabaseHelper 

EDIT:

я сузил выбор. Это выглядит как 2 места, которые лучше всего поставить на этот код. Один из них внутри ProviderExample расширяет класс ContentProvider вместе с другими переменными, а другая позиция внутри DatabaseHelper расширяет класс SQLiteOpenHelper, оба возможны, но я не знаю, какое из двух мест является более правильным. Я нашел примеры обоих способов использования.

+0

Пожалуйста, не добавляйте Android в заголовок вопроса, тег на дне достаточно. – Luksprog

ответ

1

3 столбца в моей базе данных sqlite, показанной выше, для использования в контенте провайдер, где я могу поместить их в код ниже? Где лучшее место ?

и что я должен поместить в класс NoteItems, который расширяет BaseColumns?

Это не вопрос, на который нужно ответить. Я мог бы сказать, что они лежат в нижней части класса, и я сомневаюсь, что это поможет вам.

При использовании ContentProvider хорошей идеи заключается в использовании Contract класса/интерфейса, в котором поставить связанные константы всех поставщика для легких доступа/изменений, а также для (возможно) публичного релиза (если вы позволите провайдеру использовать другими приложениями). Эта часть представлена ​​в файле guide for providers, доступном на сайте разработчиков Android, который я настоятельно рекомендую вам прочитать.

Я бы переместить интерфейс NotesItems в своем собственном файле и поместить все константы в нем (по крайней мере те, которые вы упоминаете), и доступ к ним с помощью NotesItems._ID и т.д.

Смежные вопросы