Я пытаюсь выполнить простой запрос на обновление, в котором будет обновлен ОДИН столбец в строке. Каждый пример, который я видел в Интернете, выполняет полное обновление, где обновляется вся строка. Я использую MVVM - Activity, Viewmodel, Repository, AsyncTask, DAO.
Все работает нормально, пока я не доберусь до задачи Asyn c. Метод doInBackground ожидает 2 параметра - первичный ключ, используемый для идентификации строки и данных, которые будут обновлены. Однако задача Asyn c принимает только объект. Поэтому я не уверен, как поступить. Пожалуйста, смотрите фрагменты ниже:
DAO
@Query ("UPDATE CbtTable SET twistedThinkingPK = :twistedThinkingPK WHERE cbtId = :cbtId")
void updateTwistedThinking(long cbtId, long twistedThinkingPK);
ASYNC
@Override
protected Void doInBackground(CbtTable... cbtTables) {
mCbtDao.updateTwistedThinking(cbtTables[0]); // THIS THROWS THE ERROR, IT WANTS THE TWO VARIABLES FORM THE DAO UPDATE QUERY.
return null;
REPOSITORY
public void updateTwistedThinking(CbtTable cbtTable){
new UpdateTwistedThinkingAsyncTask(cbtDao).execute(cbtTable);
}
VIEW MODEL
public void updateTwistedThinking(CbtTable cbtTable){
cbtRepository.updateTwistedThinking(cbtTable);
}
ACTIVITY
public void updateTwistedThinkingCbtTable(long twistedThinkingPK){
CbtTable cbtTable = new CbtTable();
cbtTable.setTwistedThinkingPK(twistedThinkingPK);
cbtViewModel.updateTwistedThinking(cbtTable);
}