Когда пользователь создает новый список (или выбирает существующий список), я хочу, чтобы мой RecyclerView отображал его содержимое и наблюдал за любыми изменениями в этом списке. Я не могу начать наблюдение за объектом без соответствующего идентификатора.
Как передать правильный идентификатор в MainActivity? Если необходимы моя ViewModel и код активности, сообщите мне, и я отредактирую сообщение.
Когда я регистрирую идентификатор из репозитория

Когда я регистрирую LiveData в MainActivity отображаются соответствующие идентификаторы.

Класс "Моя база данных"
@TypeConverters({ArrayListConverter.class}) // List converter for database
@Database(entities = ListContainer.class, version = 1, exportSchema = false)
public abstract class ListContainerDatabase extends RoomDatabase {
private static ListContainerDatabase dbInstance;
private static final String DB_NAME = "list_container_db";
private static final int NUM_THREADS = 4;
final static ExecutorService executor = Executors.newFixedThreadPool(NUM_THREADS);
public abstract ListContainerDao getDao();
public static synchronized ListContainerDatabase getInstance(Context context) {
if(dbInstance == null) {
dbInstance = Room.databaseBuilder(
context.getApplicationContext(),
ListContainerDatabase.class, DB_NAME)
.fallbackToDestructiveMigration()
.build();
}
return dbInstance;
}
public static Executor getExecutor() {
return executor;
}
Мой DAO
@Dao
public interface ListContainerDao {
@Insert
long insertListContainer(ListContainer container);
... // other database queries
}
Мой репозиторий
public class Repository {
private static final String TAG = "Repository";
private ListContainerDao listContainerDao;
private long id;
private Executor executor = ListContainerDatabase.getExecutor();
public Repository(Application application) {
ListContainerDatabase containerDb = ListContainerDatabase.getInstance(application);
listContainerDao = containerDb.getDao();
}
public long insertListContainer(ListContainer container) {
executor.execute(new Runnable() {
@Override
public void run() {
id = listContainerDao.insertListContainer(container); // this returns ID starting at 0
}
});
Log.i(TAG, "insertListContainer: from Repository id is :" + id);
return id;
}
}
Подробнее здесь: https://stackoverflow.com/questions/647 ... rting-at-0
Мобильная версия