是否可以使用LiveData从Room中获取特定行?我的目标是从数据库中检索某些项,当每个项都被列(“页面”和“类别”)限定时。问题是,在LiveData观察者中,我总是收到相同的页面-- livedata对象从一开始就被启动了。如果以后在ViewModel中更改它,则没有任何效果:
private fun requestNextPageFromDB(page: Int) {
filmsListLiveData = interactor.getPageOfFilmsFromDB(page)
}
我在ViewModel的init块中创建了ViewModel对象:
var film
当时我正在阅读与LiveData和ViewModels有关的安卓文档,我遇到了一条令我困惑的条目。
在中,示例代码实现如下所示的观察者
public class NameActivity extends AppCompatActivity {
private NameViewModel model;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Other code to setup the activity...
我遇到了一个问题,即使我是同步编写的,但是写入到我的房间数据库中的数据不会出现在ViewModel中。
这就是日志的样子:
com.widget D/WriteActivity: Writing widget data to the database
com.widget D/WriteActivity: Starting the ReadActivity
com.widget D/ReadActivity: Got a new list of 0 objects
情况如下:
我有两个活动,WriteActivity和ReadActivity。在ReadActivity内部,我有一个ViewM
我在我的应用上使用MVVM作为架构,但我在观察者代码中看到了一个意想不到的问题:观察者内部总是在获得真正的值之前输入一次。
myViewModel.getUserInfo().observe(this, androidx.lifecycle.Observer { user ->
if (user!= null) {
} else {
//THE FIRST TIME THROW HERE
}
在我的viewModel中,我有以下内容:
class MyViewModel : ViewModel() {
f
我使用Room处理本地数据库,使用LiveData处理DAO。
因此,我使用LiveData作为事务的线程处理程序。
问题是如何使用LiveData进行插入和更新?或者通常是,空函数如何返回房间中的LiveData?
@Query("select * from table")
fun getAll(): LiveData<List<T>>
@Insert
fun insert(T data): LiveData<?> // What should be the generic, since it's void?
在RxJava中,我们
我有问题,观察3种不同的名单与实时数据观察者,以查看他们在一个单一的回收者的观点。这是一个场景:在ListsFragment中,我有3个选项卡(想要,玩,玩)和1个回收器视图的TabLayout。在不同的选项卡上单击,我从数据库加载不同的游戏列表,我在回收者视图中展示了LiveData观察者模式。直到这一刻一切都还好。当我按下一个游戏删除按钮,数据库被更新,但在回收者视图中加载错误列表而不是所选选项卡的列表(可能是因为有3个活动观察者)时,就会出现问题,因此屏幕上的数据会被错误的游戏更新。
行为的Gif:
谁能帮我,我尝试了很多解决方案,但没有任何帮助,我被困超过一个月。
这是密码。碎片:
p
学校的项目,我对Android的开发非常陌生。
问题
我在onClick保存人员片段中有一个带有侦听器的按钮,该按钮将个人数据保存到数据库中。所有操作都很好,但出于某种原因,使用第一次单击,它不会返回插入的行ID,但是它会在第二次单击开始时返回。
在进入下一个片段之前,我确实需要这个ID。
不确定这是否重要,但是每当我返回(重新加载)到这个保存人片段时,其行为总是相同的,即第一个单击始终无法捕获插入的行ID。
输入数据:
first name = John
last name = Smith
为了演示的目的,如果我尝试使用这个按钮3x插入person数据(返回的insert ID在日志中),我
我正在尝试使用Room数据库& LiveData。我有ViewModels,里面放着LiveData,他们是从刀上来的。如果我更新了一个Transaction,那么就可以观察到LiveData<List<Transaction>>,但是根本没有观察到LiveData<Transaction>。那件事怎么可能?我做错什么了?
public abstract class Dao {
@Query("SELECT * FROM transact WHERE deleted = :value")
public abstract
在我的应用程序中,我试图使用MediatorLiveData来侦听对实时数据的更改。由于涉及到DB操作,所以我使用像这样的executor服务。
MediatorLiveData<Content> mediatorLiveData = new MediatorLiveData<>();
appExecutors.diskIO().execute(() -> {
long id = contentDao.insert(content);
Log.i("LIVE
在学习新的安卓架构组件的ViewModel和LiveData时,当观察到数据库源更改中的LiveData变化时,有一点困惑,以及这如何与光标适配器一起工作。
在中,它说
int FLAG_REGISTER_CONTENT_OBSERVER
If set the adapter will register a content observer on the cursor
and will call onContentChanged() when a notification comes in. Be
careful when using this flag: you will need
我的应用程序的结构如下:
MainActivity(Activity) containing Bottom Navigation View with three fragments nested below HomeFragment(Fragment) containing TabLayout with ViewPager with following two tabs Journal(Fragment) Bookmarks(Fragment)
- Fragment B`(Fragment)`
- Fragment C`(Fragment)`
我正在用房间保存所有的日志记录。我在日志和
我正在使用Transformations.map方法在原始LiveData的基础上得到一个新的LiveData。虽然原始的getValue方法总是返回一个正确的值,但是映射到的相同的访问器返回null。
如何解决或解决这个问题,以便在不调用LiveData的情况下测试公开observe的类?
下面是解释这个问题的代码:
public class LiveDataTest {
@Rule
public TestRule rule = new InstantTaskExecutorRule();
@Test
public void mapTest() {
当我使用ViewModel测试一个小代码时,我注意到一个逻辑上正确的小问题,我想知道如何解决这个问题。让我们看看这个小班:
public class MyDataViewModel extends ViewModel {
MutableLiveData<List<MyData>> mData = new MutableLiveData<>();
public ContactsViewModel() {}
public void setData(List<MyData> data) {
mData.pos