导航抽屉碎片Sqlite

时间:2017-08-08 16:38:43

标签: android sqlite android-fragments android-sqlite navigation-drawer

我正在制作TODO应用。我有一个导航抽屉,其中包含工作,个人等项目。当您单击工作时,它打开工作片段,您可以在其中添加任务。同样适用于个人。在工作和个人if ... else ...中,我将TODO列表存储在Fragment数据库中。我是否需要为每个片段创建一个单独的表? 现在我只创建了一个表,当我添加一个任务时,它会被添加到Work和Personal。

TaskContract.java

SQLite

TaskDBHelper.java

public final class TaskContract {

    private TaskContract(){}

    public static final String CONTENT_AUTHORITY="com.example.android.tasks";
    public static final Uri BASE_CONTENT_URI=Uri.parse("content://"+CONTENT_AUTHORITY);
    public static final String PATH_TASKS="tasks";

    public static final class TaskEntry implements BaseColumns{
        public static final Uri CONTENT_URI=Uri.withAppendedPath(BASE_CONTENT_URI,PATH_TASKS);
        public static final String CONTENT_LIST_TYPE=
                ContentResolver.CURSOR_DIR_BASE_TYPE+"/"+CONTENT_AUTHORITY+"/"+PATH_TASKS;
        public static final String CONTENT_ITEM_TYPE=
                ContentResolver.CURSOR_ITEM_BASE_TYPE+"/"+CONTENT_AUTHORITY+"/"+PATH_TASKS;
        public static final String TABLE_NAME="tasks";

        public static final String _ID=BaseColumns._ID;
        public static final String NAME="taskname";
        public static final String DUEDATE="duedate";
        public static final String DUETIME="duetime";
    }
}

TaskProvider.java

public class TaskDBHelper extends SQLiteOpenHelper {

    private static final String DATABASE_NAME="list.db";
    private static final int DATABASE_VERSION=1;

    public TaskDBHelper(Context context) {
        super(context, DATABASE_NAME,null,DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        String SQL_CREATE_TABLE="CREATE TABLE "+TaskContract.TaskEntry.TABLE_NAME+
                " ("+TaskContract.TaskEntry._ID+" INTEGER PRIMARY KEY AUTOINCREMENT,"
                +TaskContract.TaskEntry.NAME+" TEXT NOT NULL, "
                +TaskContract.TaskEntry.DUEDATE+" TEXT, "
                +TaskContract.TaskEntry.DUETIME+" TEXT);";


        db.execSQL(SQL_CREATE_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

这是我的数据库和表创建代码。我应该为每个片段创建这些类。请帮忙? 我的应用与Google Keep应用类似

1 个答案:

答案 0 :(得分:0)

这不是为每个片段创建表的好方法。数据库设计应独立于为其创建的视图。因此,您可以使用相同的表格根据表格字段显示不同的视图。

我认为你需要数据库架构设计来建立一个好的数据库。您可以参考此链接 - Where to find practical well-designed database schema examples to learn from?

在您的问题的上下文中,您将有一个表作为节点',它将具有所有任务类型的公共列。假设,个人任务'类型包括“工作”的提醒时间不一样。然后,你创建提醒'存储' node_id'的表随着时间的推移。通过这种方式,确定应用程序所需的表格和列。

您必须根据应用要求决定database schema

希望这会有所帮助。