Следующие шаги для перехода от sqlite к комнате в приложении Android - PullRequest
0 голосов
/ 18 сентября 2018

Я создал приложение для инвентаризации, используя sqlite db для хранения и извлечения данных.Ссылка GitHub для этого приложения находится здесь: инвентарь

Теперь я хочу реализовать то же приложение, используя библиотеку постоянства Room, и приступил к соответствующей миграции.До сих пор я делал следующее:

  1. Добавлен класс POJO с именем Products с использованием аннотации @Entity:

@ Entity (tableName = "InventoryList")Публичный класс Продукты {

@NonNull
@PrimaryKey
private int _ID;
private String PRODUCT_NAME;
private String PRICE;
private String QUANTITY;
private String SUPPLIER;
private String SUPP_PH_NUM;

public Products() {

}

// getters and setters

@NonNull
public int get_ID() {
    return _ID;
}

public String getPRODUCT_NAME() {
    return PRODUCT_NAME;
}

public String getPRICE() {
    return PRICE;
}

public String getQUANTITY() {
    return QUANTITY;
}

public String getSUPPLIER() {
    return SUPPLIER;
}

public String getSUPP_PH_NUM() {
    return SUPP_PH_NUM;
}


public void set_ID(@NonNull int _ID) {
    this._ID = _ID;
}

public void setPRODUCT_NAME(String PRODUCT_NAME) {
    this.PRODUCT_NAME = PRODUCT_NAME;
}

public void setPRICE(String PRICE) {
    this.PRICE = PRICE;
}

public void setQUANTITY(String QUANTITY) {
    this.QUANTITY = QUANTITY;
}

public void setSUPPLIER(String SUPPLIER) {
    this.SUPPLIER = SUPPLIER;
}

public void setSUPP_PH_NUM(String SUPP_PH_NUM) {
    this.SUPP_PH_NUM = SUPP_PH_NUM;
}

}

A ProductsDB класс с использованием аннотации @Database, которая объявляет db:

@ База данных (entity = {Products.class}, версия = 2)

public abstract class ProductDB extends RoomDatabase {

public abstract ProductDAO productDAO();

private static final String DB_NAME = "inventory.db";

private static ProductDB INSTANCE;

static ProductDB getDatabase(final Context context) {
    if (INSTANCE == null) {
        synchronized (ProductDB.class) {
            if (INSTANCE == null) {
                INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
                        ProductDB.class,DB_NAME)
                        .fallbackToDestructiveMigration()
                        .build();
            }
        }
    }
    return INSTANCE;
} }
Интерфейс с именем ProductDAO с использованием аннотации @DAO:

@ Dao

public interface ProductDAO {

    @Insert(onConflict = REPLACE)

    void insertProduct(Products products);

    @Update
    void updateProduct(Products products);

    @Query("SELECT * from InventoryList")

    List<Products> getProducts();
}

Я не уверен, как действовать дальше последелать вышеупомянутые наработки.Вопрос, в котором я больше смущен или застрял, - это использование класса ProductCursorAdapter в моем исходном приложении, и как мне обработать или обновить его в отношении Room?Нужно ли вносить какие-либо изменения в этот класс в отношении комнаты?

Какие еще обновления / изменения мне нужно сделать в моей новой реализации, чтобы было достаточно миграции Room?

Надеюсь, мой вопрос и предоставленная информация понятны.Я ищу пошаговый ввод / решение по этому вопросу, чтобы у меня также было хорошее понимание при миграции.Кроме того, дайте мне знать, если в основах, которые я сделал до сих пор, что-то не хватает.

...