考虑:
public static final String NOTE_ID = "_id";
public static final String TITLE = "title";
public static final String TEXT = "text";
上面显示的sqlite数据库中有3列要在内容提供程序中使用,我在哪里将这些列放在下面的代码中?哪里是最好的地方?
我应该在扩展BaseColumns的NoteItems类中添加什么?
有点混淆在哪里放什么。
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
编辑:
我缩小了选择范围。它看起来像2个最好放置此代码的地方。一个是在ProviderExample内部扩展ContentProvider类以及其他变量,而另一个位置是在DatabaseHelper内部扩展SQLiteOpenHelper类,两者都是可能的,但我不知道哪两个地方更正确。我找到了两种使用方式的例子。
答案 0 :(得分:1)
上面显示的我的sqlite数据库中的3列要在内容中使用 提供商,我在哪里将这些放在下面的代码中?哪里最好 放置?
我应该在扩展BaseColumns的NoteItems类中添加什么?
这不是真正需要回答的问题。我可以说把它们放在课堂的最底层,我怀疑它会对你有所帮助。
使用ContentProvider
时,一个好主意就是使用Contract
类/接口来放置所有与提供者相关的常量,以便于访问/更改以及(可能的)公开发布(如果您允许其他应用程序使用该提供程序)。这部分内容在Android开发者网站上提供的guide for providers中,我强烈建议您阅读。
我会在自己的文件中移动NotesItems
接口并将所有常量放入其中(至少是你提到的那些)并使用NotesItems._ID
等访问它们