android - 如何将数据添加到 LiveData
问题描述
在 MainActivity 中,我一一进行了两次调用getAddress()
,这是代码 getAddress 方法:
public class RemoteRepository {
private ApiRequest apiRequest;
private LiveData<List<AddressResponse>> allAddresses = new MutableLiveData<>();
public RemoteRepository() {
apiRequest = RetrofitRequest.getInstance().create(ApiRequest.class);
}
public LiveData<List<AddressResponse>> getAddresses() {
return allAddresses;
}
public void getAddress(double query1, double query2) {
apiRequest.getAddress(query1, query2)
.enqueue(new Callback<AddressResponse>() {
@Override
public void onResponse(Call<AddressResponse> call, Response<AddressResponse> response) {
if(response.body() != null) {
allAddresses.getValue().add(response.body());
}
}
@Override
public void onFailure(Call<AddressResponse> call, Throwable t) {
}
});
}
}
不幸的是,我收到以下错误:java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null object reference
.
有没有办法从每次调用中添加数据LiveData<List<AddressResponse>> allAddresses
?
解决方案
我相信这是你需要改变的
allAddresses.getValue().add(response.body());
对此:
allAddresses.postValue(response.body())
推荐阅读
- asynchronous - 为等待中的对象字段分配新值会阻止进一步的说明
- html - 带有当前 URL 的 Facebook 评论计数器
- javascript - Webpack 无法解析库中使用的 @(别名)导入
- javascript - 将密码重置令牌插入未受保护的 NodeJS 路由
- css - Safari 不尊重 @Keyframes 不透明度/填充
- python - 如何使用 Flask-SQLAlchemy 从数据库中仅选择某些列?
- c++ - 修改 n 维矩阵的 TypedArray 位置
- spring-boot - 尽管存在`@Transactional`,为什么这些数据库修改不回滚?
- csv - 是否可以生成只读 CSV 文件?
- sql - 如何在 SQL Server 中选择满足某些条件的特定上一行