Приведенный ниже код взят из приложения, которое я создаю на основе другого простого приложения, в котором у сущности был только один столбец.Теперь я добавил еще один столбец (materialBrand), и у меня возникли трудности с реализацией этого в классе репозитория в AsynkTask.Пожалуйста, помогите.
Это класс Entity:
@Entity(tableName = "material_table")
public class MaterialEntity {
@PrimaryKey
@NonNull
@ColumnInfo(name = "material_name")
private String mMaterialName;
@ColumnInfo(name = "material_brand")
private String mMaterialBrand;
public MaterialEntity(@NonNull String materialName, String materialBrand) {
this.mMaterialName = materialName;
this.mMaterialBrand = materialBrand;
}
public String getMaterialName(){
return this.mMaterialName;
}
public String getMaterialBrand(){
return this.mMaterialBrand;
}
}
Это Dao:
@Dao
public interface MaterialDao {
@Insert
void insert(MaterialEntity materialName, MaterialEntity materialBrand);
@Query("DELETE FROM material_table")
void deleteAll();
@Query("SELECT * from material_table ORDER BY material_name ASC")
LiveData<List<MaterialEntity>> getAllMaterials();
}
Это класс репозитория:
public class MaterialRepository {
private MaterialDao mMaterialDao;
private LiveData<List<MaterialEntity>> mAllMaterial;
public MaterialRepository(Application application) {
MaterialRoomDatabase db = MaterialRoomDatabase.getDatabase(application);
mMaterialDao = db.materialDao();
mAllMaterial = mMaterialDao.getAllMaterials();
}
public LiveData<List<MaterialEntity>> getAllMaterials() {
return mAllMaterial;
}
public void insert (MaterialEntity materialName, MaterialEntity materialBrand) {
new insertAsyncTask(mMaterialDao).execute(materialName, materialBrand);
}
private static class insertAsyncTask extends AsyncTask<MaterialEntity, Void, Void> {
private MaterialDao mAsyncTaskDao;
insertAsyncTask(MaterialDao dao) {
mAsyncTaskDao = dao;
}
@Override
protected Void doInBackground(final MaterialEntity... params) {
mAsyncTaskDao.insert(params[0]);
return null;
}
}
}