Я настраиваю адаптер синхронизации Android в архитектуре MVP и хочу получить разъяснения о том, как его построить?
- Имеется ли каждая модель (здания, службы, пользователи, ...) нужен ContentProvider?
Я пытался следовать руководству для разработчиков https://developer.android.com/training/sync-adapters/creating-sync-adapter. Однако я не очень хорошо понимаю ContentProvider!
У меня уже естьпостроить помощник по базе данных:
public class DBHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "syncAdapter.db";
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
addCarriersTable(sqLiteDatabase);
addCompaniesTable(sqLiteDatabase);
addUsersTable(sqLiteDatabase);
addShiftsTable(sqLiteDatabase);
addVehiclesTable(sqLiteDatabase);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
private void addCarriersTable(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(
"CREATE TABLE " + CarrierEntry.TABLE_NAME + " (" +
CarrierEntry._ID + " INTEGER PRIMARY KEY, " +
CarrierEntry.COLUMN_NAME + " TEXT NOT NULL);"
);
}
private void addCompaniesTable(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(
"CREATE TABLE " + CompanyEntry.TABLE_NAME + " (" +
CompanyEntry._ID + " INTEGER PRIMARY KEY, " +
CompanyEntry.COLUMN_NAME + " TEXT NOT NULL, " +
CompanyEntry.COLUMN_COLOR + " TEXT NOT NULL, " +
CompanyEntry.COLUMN_CITY + " TEXT NOT NULL, " +
CompanyEntry.COLUMN_STATE + " TEXT NOT NULL);");
}
private void addUsersTable(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(
"CREATE TABLE " + UserEntry.TABLE_NAME + " (" +
UserEntry._ID + " INTEGER PRIMARY KEY, " +
UserEntry.COLUMN_NAME + " TEXT NOT NULL, " +
UserEntry.COLUMN_ROLE + " TEXT NOT NULL, " +
UserEntry.COLUMN_ENROLLMENT + " TEXT NOT NULL);");
}
private void addShiftsTable(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(
"CREATE TABLE " + ShiftEntry.TABLE_NAME + " (" +
ShiftEntry._ID + " INTEGER PRIMARY KEY, " +
ShiftEntry.COLUMN_NAME + " TEXT NOT NULL);");
}
private void addVehiclesTable(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(
"CREATE TABLE " + VehicleEntry.TABLE_NAME + " (" +
VehicleEntry._ID + " INTEGER PRIMARY KEY, " +
VehicleEntry.COLUMN_NAME + " TEXT NOT NULL, " +
VehicleEntry.COLUMN_CART + " BOOLEAN NOT NULL);");
}
}
После этого я построил класс контракта:
public class ExampleContract {
public static final String CONTENT_AUTHORITY = "br.com.example.syncAdapter";
public static final Uri BASE_CONTENT_URI = Uri.parse("content://" + CONTENT_AUTHORITY);
public static final String PATH_CARRIER = "carriers";
public static final String PATH_COMPANY = "companies";
public static final String PATH_SHIFT = "shifts";
public static final String PATH_USER = "users";
public static final String PATH_VEHICLE = "vehicles";
}
Но теперь я застрял на ContentProvider.Может ли кто-нибудь указать мне учебник или дать подсказку?