gpt4 book ai didi

java - Android Studio 中带参数的查询 - Room

转载 作者:行者123 更新时间:2023-12-01 17:44:12 27 4
gpt4 key购买 nike

我想查询一个家族中的所有鸟类,但我不知道该怎么做。到目前为止我已经做到了这一点,但我觉得我错过了一些东西:

DAO:

@Query("Select * from bird WHERE family=:family")
public LiveData<List<Bird>> getBirdsFromFamily(String family);

存储库:

private LiveData<List<Bird>> allBirdsFromFamily;

private String family;

public BirdRepository(Application application){
Database database = Database.getInstance(application);
dao = database.dao();


allBirdsFromFamily = dao.getBirdsFromFamily(family);
}


public LiveData<List<Bird>> getBirdsFromFamily(String family){
return allBirdsFromFamily;
}

查看模型:

private LiveData<List<Bird>> allBirdsFromFamily;

private String family;


public BirdViewModel(@NonNull Application application) {
super(application);
birdRepository = new BirdRepository(application);

allBirdsFromFamily = birdRepository.getBirdsFromFamily(family);

}


public LiveData<List<Bird>> getAllBirdsFromFamily(String family)
{
return allBirdsFromFamily;
}

我有一份家庭名单和鸟类名单。

当单击家庭列表中的某个项目时,我想打开一个包含所有鸟类的列表。我可以从项目中获取字符串,但当我调用该方法时什么也没有出现。

    String family = intent.getStringExtra(AddEditFamilyActivity.EXTRA_FAMILY);

birdViewModel.getAllBirdsFromFamily(family).observe(this, new Observer<List<Bird>>() {

@Override
public void onChanged(@Nullable List<Bird> birds) { //everytime something changes, the adaptater is updated
//update the recycler view
adapter.submitList(birds);
}

});

最佳答案

由于我的评论有点长,我会发一个帖子。

I don't have any doInBackGround for this query, how should I do it ?

是的,当您查询数据库时,您希望避免使用主线程,原因有两个,第一个是因为 Android 会崩溃,告诉您不要这样做。第二个是让您的用户在执行获取数据的工作时与您的应用程序进行交互。

在此doc您可以查看示例和 Codelab,了解如何正确调用数据库。

关于java - Android Studio 中带参数的查询 - Room,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60891092/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com