首页 > 解决方案 > 如何将数据添加到 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

标签: androidapi

解决方案


我相信这是你需要改变的

allAddresses.getValue().add(response.body());

对此:

allAddresses.postValue(response.body())

推荐阅读