2017-12-18 17 views
0

내가 누락 된 부분이 있는지 확실하지 않습니다. LiveData로 데이터를 가져 오는 동안 진행 과정을 게시하는 방법에 대한 샘플이나 자습서를 찾지 못하는 것 같습니다.Android 구조 구성 요소 LiveData 진행률 업데이트

예 : 내 DB에 5000 개의 레코드가 있고 중간 진행률 막대를 표시하는 대신 데이터베이스에서 읽는 레코드를 표시하려고한다고 가정 해보십시오.

샘플은 db 또는 네트워크에서 데이터를로드하고 List를 반환하는 방법을 보여줍니다. 그러나 AsyncTask와 같은 진행 상황을 게시하는 방법에 대한 언급은 없습니다.

지금까지 내가 당신이 얻을 이해와 모든 데이터 :

ViewModelProviders.of(this).get(MyViewModel.class); 
model.getData().observe(this, data -> { 
    // update UI 
}); 

I 추측 리스너/콜백의 일종을 만들 수 있지만 아키텍처 구성 요소는이에서 저장하지 말아야 하나? 내가 빠진 것이 있습니까?

답변

0

응용 프로그램 가이드는 how to expose network status의 예를 보여줍니다. 로드하는 동안 진행률을 추가하여 다음 일반 클래스를 수정할 수 있다고 생각합니다.

//a generic class that describes a data with a status 
public class Resource<T> { 
    @NonNull public final Status status; 
    @Nullable public final T data; 
    @Nullable public final String message; 
    private Resource(@NonNull Status status, @Nullable T data, @Nullable String message) { 
     this.status = status; 
     this.data = data; 
     this.message = message; 
    } 

    public static <T> Resource<T> success(@NonNull T data) { 
     return new Resource<>(SUCCESS, data, null); 
    } 

    public static <T> Resource<T> error(String msg, @Nullable T data) { 
     return new Resource<>(ERROR, data, msg); 
    } 

    public static <T> Resource<T> loading(@Nullable T data) { 
     return new Resource<>(LOADING, data, null); 
    } 
} 

또한 전체 구현 here을 확인할 수 있습니다.