Java 房间数据库多事务
我正在使用Room构建一个杂货店列表应用程序,需要在包含我的Dao对象的列表中进行多次更新。如何在对象列表中运行多个更新?我应该在单个线程中运行它们,还是必须为每个对象更新创建多个线程?我目前遇到的问题是,只有列表中的第一个对象被正确更新,其他对象被设置为checked=false,但listed=true。线程完成所有事务更新后,活动应重新加载。我正在使用AsyncTaskLoader,谢谢 杂货刀 装载机等级Java 房间数据库多事务,java,android,android-room,asynctaskloader,Java,Android,Android Room,Asynctaskloader,我正在使用Room构建一个杂货店列表应用程序,需要在包含我的Dao对象的列表中进行多次更新。如何在对象列表中运行多个更新?我应该在单个线程中运行它们,还是必须为每个对象更新创建多个线程?我目前遇到的问题是,只有列表中的第一个对象被正确更新,其他对象被设置为checked=false,但listed=true。线程完成所有事务更新后,活动应重新加载。我正在使用AsyncTaskLoader,谢谢 杂货刀 装载机等级 可以使用更新多个对象 @更新 public void updateProcessG
可以使用更新多个对象 @更新 public void updateProcessGroceryItem。。。杂货店 然后
db.groceryItemDao().updateGroceries(groceryItems.toArray(new GroceryItem[groceryItems.size()]));
我不明白你的问题。这意味着不将数据更新到数据库或列表中。如果两个更新都未在listview或recyclerview中显示更新的数据。
package loaders;
import android.content.AsyncTaskLoader;
import android.content.Context;
import android.util.Log;
import java.util.List;
import data.AppDatabase;
import data.GroceryItem;
import static utils.Constant.IS_CHECKED_FALSE;
import static utils.Constant.IS_LISTED_FALSE;
public class GroceryLoaderUpdate extends AsyncTaskLoader {
public static final String TAG = "GroceryLoaderUpdate";
private List<GroceryItem> groceryItems;
private AppDatabase db;
public GroceryLoaderUpdate(Context context, List<GroceryItem> groceryItems) {
super(context);
this.groceryItems = groceryItems;
}
@Override
protected void onStartLoading() {
forceLoad();
}
@Override
public Object loadInBackground() {
db = AppDatabase.getAppDataBase(GroceryLoaderUpdate.this.getContext());
for (GroceryItem current : groceryItems) {
if (current.isChecked()) {
current.setChecked(IS_CHECKED_FALSE);
current.setListed(IS_LISTED_FALSE);
db.groceryItemDao().updateGrocery(current);
}
}
return null;
}
}
db.groceryItemDao().updateGroceries(groceryItems.toArray(new GroceryItem[groceryItems.size()]));