0

検討:

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 か所のようです。1 つは ProviderExample extends ContentProvider クラス内に他の変数と共にあり、もう 1 つは DatabaseHelper extends SQLiteOpenHelper クラス内にあります。どちらも可能ですが、2 つの場所のどちらがより正しいかはわかりません。両方の方法が使用されている例を見つけました。

4

1 に答える 1

1

上記の sqlite データベースの 3 つの列はコンテンツ プロバイダーで使用されますが、これらを以下のコードのどこに配置すればよいですか? 最高の場所はどこですか?

また、BaseColumns を拡張する NoteItems クラスには何を入れればよいでしょうか?

これは実際には答えられる質問ではありません。それらをクラスの一番下に置くと言えますが、それがあなたの助けになるとは思えません。

ContentProvider良いアイデアを使用する場合は、クラスContract/インターフェイスを使用して、プロバイダーに関連するすべての定数を簡単にアクセス/変更し、(可能な) パブリック リリース (プロバイダーを他のアプリで使用できるようにする場合) に配置することをお勧めします。この部分は、Android 開発者サイトで入手できるプロバイダー向けのガイドで説明されています。このガイドを読むことを強くお勧めします。

NotesItemsインターフェイスを独自のファイルに移動し、すべての定数(少なくともあなたが言及したもの)をその中に入れ、 NotesItems._IDetcを使用してそれらにアクセスします

于 2013-05-10T10:48:16.860 に答える