JAVA中没有Room的NetworkBoundResource类

时间:2019-10-14 06:47:46

标签: java android android-mvvm

我正在制作一个应用程序,(使用MVVM模式),在其中我不想 将数据保存在房间中,并且只希望<每次使用Retrofit的strong> API调用。 我被 NetwrokBoundResource类所困扰,该笔记能够实现执行API调用并简单地在我的Repository类中返回结果的代码。 我已尝试理解此networkboundresource-helper-class-without-room,但所有答案都在科特林中。

我已经完成了一些代码,但是不知道这是正确的方法。
这是我的NetworkBoundResources类

public abstract class NetworkBoundResources<RequestType> {

    private MediatorLiveData<Resource<RequestType>> result;

    @MainThread
    NetworkBoundResources(){

        if (result == null) {
            result = new MediatorLiveData<>();
        }
        //result.setValue(Resource.loading(null));

        fetchFromNetwork();

    }

    @MainThread
    private void fetchFromNetwork() {

        createCall().enqueue(new Callback<RequestType>() {
            @Override
            public void onResponse(@NonNull Call<RequestType> call,@NonNull Response<RequestType> response) {
                result.setValue(Resource.success(response.body()));
            }

            @Override
            public void onFailure(@NonNull Call<RequestType> call,@NonNull Throwable t) {

               // result.setValue(Resource.error());
            }
        });
    }

    public abstract Call<RequestType> createCall();

    public LiveData<Resource<RequestType>> getAsLiveData(){
        return result;
    }
}

在这里,我对 MediatorLiveData 感到困惑,如何使用 addSource() removeSource(),因为我没有使用 dbSource 还是应该使用MutableLiveDate,因为只有一个来源。

0 个答案:

没有答案