Firebase ViewModel 架构是一种用于在 Android 应用程序中管理数据和处理业务逻辑的架构模式。它结合了 Firebase 实时数据库和 Android 架构组件中的 ViewModel、LiveData 和 Repository。
下面是一个示例代码,演示了如何使用 Firebase ViewModel 架构来获取和展示用户信息:
public class UserRepository {
private DatabaseReference mDatabase;
public UserRepository() {
mDatabase = FirebaseDatabase.getInstance().getReference();
}
public LiveData getUser(String userId) {
MutableLiveData userLiveData = new MutableLiveData<>();
mDatabase.child("users").child(userId).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
userLiveData.setValue(user);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
// 处理取消事件
}
});
return userLiveData;
}
}
public class UserViewModel extends ViewModel {
private UserRepository mUserRepository;
private MutableLiveData mUserLiveData;
public UserViewModel() {
mUserRepository = new UserRepository();
mUserLiveData = new MutableLiveData<>();
}
public LiveData getUser(String userId) {
mUserLiveData = mUserRepository.getUser(userId);
return mUserLiveData;
}
}
public class MainActivity extends AppCompatActivity {
private UserViewModel mUserViewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mUserViewModel = ViewModelProviders.of(this).get(UserViewModel.class);
mUserViewModel.getUser("userId").observe(this, new Observer() {
@Override
public void onChanged(User user) {
// 更新 UI,显示用户信息
}
});
}
}
通过以上代码示例,我们可以看到如何使用 Firebase ViewModel 架构来获取和展示用户信息。在 UserViewModel 中,我们使用 UserRepository 来获取用户数据,并将其存储在 LiveData 中。然后在 Activity 或 Fragment 中,我们观察 LiveData 的变化,并在 onChanged() 方法中更新 UI 显示用户信息。
这样,当用户数据发生变化时,Firebase ViewModel 架构会自动更新 UI,以反映最新的用户信息。