Короткий ответ : просто получите ваши данные из базы данных в onDataSetChanged () без асинхронной работы. Что-то вроде:
Observable.doSomeLongAsyncRequestAndProcess()
.subscribe(data -> {
// Data is ready at this point
// And after that, chain to getViewAt() will be triggered,
// so you will have all your data for views in time
}).blockingFirst()
Длинный ответ : onDataSetChanged () работает с потоком подшивки, поэтому здесь будет безопасно получать данные. В обратных вызовах RemoteViewFactory только onCreate () находится в главном потоке. Вы можете легко проверить это, регистрируя текущий поток во всех обратных вызовах RemoteViewFactory. Так что проблем больше не будет, после выполнения onDataSetChanged () , он вызовет цепочку getViewAt () , и у вас уже будут все данные для вашего списка удаленных просмотров на данный момент.