我使用MVVM架构构建了一个带有存储库的Android应用程序,作为ViewModel和Room数据库之间的中介。在其中一个函数中,我从存储库类中的一个表中检索对象列表,以便可以从ViewModel类调用它。
如何从存储库类中检索列表中的第一个元素,而不是在任何一个活动中观察LiveData ?
下面是我的存储库类:
public class StudentRepository {
private StudentDAO mStudentDAO;
private LiveData<List<Student>> mAllStudents;
pu
我正在构建一个应用程序,目前有一个主要的数据模型Character,我使用Room作为本地DB和retrofit2进行API调用。用户可以将字符设置为最喜欢的字符,当这种情况发生时,这个字符存储在本地DB中(只有本地DB知道当前用户最喜欢的字符,此应用程序不会在远程服务器上存储任何数据,只需使用API获取字符列表)。问题是,当用户下次加载时,应用程序如何从web和本地DB (Room which LiveData<List<Character>)加载列表,并在RxJava2的帮助下从存储在本地DB中的web列表Characters中筛选出来(我可以使用可观察的来自retrof
我正在从我的视图模型中的数据库获取一个LiveData>。但是我必须在列表中添加一些Foo对象,然后才能将它们转发到视图。
我正在使用Room API来访问数据库。我对Dao、存储库和视图模型使用了推荐的封装。存储库只转发来自Dao的LiveData。在视图模型中,我从存储库中调用该方法并将结果存储在一个变量中。因为我不能使用LiveData-object的observe方法,所以我尝试使用Transformations.map-method。但是map-method在任何时候都不会被调用。
public class FooViewModel extends AndroidViewMod
是否可以使用LiveData从Room中获取特定行?我的目标是从数据库中检索某些项,当每个项都被列(“页面”和“类别”)限定时。问题是,在LiveData观察者中,我总是收到相同的页面-- livedata对象从一开始就被启动了。如果以后在ViewModel中更改它,则没有任何效果:
private fun requestNextPageFromDB(page: Int) {
filmsListLiveData = interactor.getPageOfFilmsFromDB(page)
}
我在ViewModel的init块中创建了ViewModel对象:
var film
我正在尝试将两个商店添加到可变列表中,如下所示: private var _shopList = MutableLiveData<List<Shop>>()
var shopList: LiveData<List<Shop>> = ()
get() = _shopList
// This function will get the arrayList items
fun getArrayList(): MutableLiveData<List<Shop>>
{
我想知道如何使从流列表中填充的LiveData列表不需要为对象的列表创建单独的模型。
用户数据类:
data class User(
// object properties
)
用户数据类:
data class UsersViewData(
val users: List<User>
)
当前如何在LiveData中将流列表转换为ViewModel列表:
val users: LiveData<Users> = getUsers.users.map { users ->
UsersViewData(users = users.m
我有一个保存用户列表的LiveData对象,我正在尝试将数据传输到另一个LiveData对象,以便在其他地方使用。 我在房间中使用MVVM,所以我从数据库中获取LiveData,在ViewModel上,我尝试将LiveData中的User对象转换为Person对象,以便在UI中显示。 所以我有一个变量是LiveData<List<User>> class User(var firstName: String, var lastName: String, var age: Integer) 我正在尝试将其转换为LiveData<List<Person>
我有麻烦了:我开始使用mvvm和LiveData了,我想用更好的方式来做。我将尝试用一个简单的例子来解释我的怀疑:
我有一个容器片段“that”,其中包含一个ViewPager2,其中包含一些片段“问题”,.There也是ExamsViewModel,QuestionViewModel.There不是db,我唯一的数据源是MyExamDataSource,如下所示:
class MyExamDataSource {
val questions:ArrayList<Question> = ArrayList()
fun saveQuestionResult(){
我使用的是ViewModel和LiveData。下面的代码是我的ViewModel的一部分。它使用switchMap转换来获得每次searchQuery更改时的项目列表。
每次searchQuery更改时,都会正确地从存储库中检索条目,但在存储库返回响应之前,items livedata将首先获得null更新,并且当存储库返回响应时,它将更新到正确的值。有什么方法可以跳过这个null更新并保留items的原始值直到存储库真正返回一个结果?
val searchQuery = MutableLiveData<String>()
val items: LiveData<List&
我的接口中有一个方法,它作为LiveData列表从我的房间数据库中检索所有记录。我的方法如下:
@Query("SELECT *FROM task_table ORDER BY taskId DESC")
fun getAll():LiveData<List<Task>>
我的ViewModel类中有以下代码:
val tasks:LiveData<List<Task>> = taskDao.getAll()
另外,在我的片段中有一个观察者设置,如下所示:
//After some other code and code
我正在开发一个使用Android体系结构组件的音频应用程序。我有一个服务,它扩展了MediaBrowserServiceCompat,并使用MediaBrowserCompat扩展了一个片段。
当我在服务的onLoadChildren()方法中对歌曲进行硬编码时,一切都运行得很好。但是我把我的歌曲存储在一个Room数据库中,并希望将它们加载到onLoadChildren()方法中。这就是我在挣扎的地方。
我尝试加载歌曲的方式有两种:
1) SongsDAO:
@Query("SELECT * FROM songs ORDER BY name COLLATE UNICODE ASC
我的应用程序使用的是Android的库,并显示了从具有无限滚动效果的分页REST api获取的项目列表。
我要做的是将与结合使用,这样当用户向下滚动列表时,将从数据库中获取下一项并显示它们(如果它们存在),同时调用该API来更新DB中的项。
我找不到任何这两种模式同居的例子。
下面是DAO:
@Query("SELECT * FROM items ORDER BY id DESC")
LivePagedListProvider<Integer,MyItem> loadListPaginated();
下面是我的NetworkBoundResource实现:
publ
我正试图在撰写项目中建立一个名称搜索功能。我有一个DummyClient列表,我使用它作为视图模型上的数据源。我试图搜索这个列表,所以更新后的结果可以显示在LazyColumn上,它不是返回任何错误,而是提供意外的结果。
class ClientViewModel : ViewModel() {
private var _clients = MutableLiveData(dummyClients)
val clients: LiveData<List<DummyClient>>
get() = _clients
fun sea
当项目被添加到LiveData列表中时,我需要获得一个观察者事件。
// mutable live data list of shoes
private var _shoesList = MutableLiveData<List<Shoe>>()
val shoesList: LiveData<List<Shoe>>
get() = _shoesList
当我向列表中添加一个新项时
_shoesList.value?.plus(Shoe(name,sizeDouble,company,description))
_sho
通过改进,我从服务器获取可流动数据,然后在视图模型中将流数据转换为Livedata,最后在活动中观察LiveData。在内部活动中,我正在为我的recyclerView使用Livedata。
但是我需要使用某种条件对数据进行过滤,并将过滤后的数据列表作为LiveData。我该怎么做,在哪里做?我能过滤Livedata吗?
我正在做的步骤是:
In my MainApi类:使用修改调用webservice,这将返回可流动的结果
public interface MainApi {
@GET("xx")
Flowable<List<User>>
嗨,我有一个从数据源中检索的项目列表,然后我在可观察到的空间上应用一张地图,将数据存储到房间中。
它设法将它添加到表中,但是当我试图检索它的LiveData时,它似乎没有将结果通知我的观察者。
表中有明确的数据,我的查询工作正常,因为我将返回时间从LiveData更改为简单的列表,并且工作非常好。
这是我的数据类
@Entity
data class Item(
@PrimaryKey
val id:String,
val title: String,
val description: String,
val im
我正在用Room作为我的项目的本地数据库。我创建了一个MovieDao接口:
@Dao
public interface MovieDao {
@Query("SELECT * FROM movies ORDER BY title ASC")
LiveData<List<Movies.Movie>> getMovies();
@Query("SELECT * FROM movies WHERE id = :id")
LiveData<Movies.Movie> getMovie(int id)