在安卓Jetpack ViewModel的Firestore中使用查询的正确方式是通过创建一个Firestore查询对象,并将其传递给ViewModel来执行查询操作。以下是正确的步骤:
FirebaseFirestore db = FirebaseFirestore.getInstance();
Query query = db.collection("users").where("age", ">=", 18);
public class UserViewModel extends ViewModel {
private MutableLiveData<List<User>> users;
public LiveData<List<User>> getUsers() {
if (users == null) {
users = new MutableLiveData<>();
loadUsers();
}
return users;
}
private void loadUsers() {
query.addSnapshotListener((queryDocumentSnapshots, e) -> {
if (e != null) {
// 处理错误
return;
}
List<User> userList = new ArrayList<>();
for (QueryDocumentSnapshot document : queryDocumentSnapshots) {
User user = document.toObject(User.class);
userList.add(user);
}
users.setValue(userList);
});
}
}
public class MainActivity extends AppCompatActivity {
private UserViewModel userViewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
userViewModel = new ViewModelProvider(this).get(UserViewModel.class);
userViewModel.getUsers().observe(this, userList -> {
// 更新UI
});
}
}
这种方式可以确保在ViewModel中进行查询操作,并将结果传递给UI层进行展示。同时,使用LiveData可以实现数据的自动更新,保持UI与数据的同步。
推荐的腾讯云相关产品:腾讯云数据库(TencentDB),腾讯云云函数(SCF),腾讯云云服务器(CVM),腾讯云对象存储(COS),腾讯云人工智能(AI),腾讯云物联网(IoT),腾讯云移动开发(Mobile),腾讯云区块链(Blockchain),腾讯云元宇宙(Metaverse)。
更多关于腾讯云产品的介绍和详细信息,请访问腾讯云官方网站:https://cloud.tencent.com/
领取专属 10元无门槛券
手把手带您无忧上云