Android Room SQLITE 更新自定义查询与 MVVM



我正在尝试进行一个简单的更新查询,其中一行中的一列将被更新。我在网上看到的每个示例都会进行全面更新,其中整行都已更新。我正在使用MVVM - Activity,Viewmodel,Repository,AsyncTask,DAO。

在我到达异步任务之前,一切正常。doInBackground 方法需要 2 个参数,即用于标识要更新的行和数据的主键。但是,异步任务仅接受对象。所以我不确定如何进行。请参阅下面的片段:

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);
}

尝试以下方法怎么样?

@Override
protected Void doInBackground(CbtTable... cbtTables) {
CbtTable cbtTable = cbtTables[0]
mCbtDao.updateTwistedThinking(cdtTable.getCbtId(), cdtTable.getTwistedThinkingPK());
return null;
}

相关内容

  • 没有找到相关文章

最新更新