簡體   English   中英

如何使用 Android 分頁庫將意圖變量傳遞給 retrofit

[英]How to pass an intent variable to retrofit using Android Pagination Library

我正在我的應用程序中實現 android 分頁庫,並希望將項目的“id”從我的活動傳遞到進行網絡調用的數據源

AddCommentActivity.java

//I want to pass this string to the network call.
String image_id = getIntent().getStringExtra("image_id");

CommentViewModel commentViewModel = new ViewModelProvider(this).get(CommentViewModel.class);

CommentDataSource.java

public class CommentDataSource extends PageKeyedDataSource<Long, Comment> {
    public CommentDataSource(){
    progress_bar = new MutableLiveData<>();
     } 

   @Override
public void loadInitial(@NonNull final LoadInitialParams<Long> params, @NonNull final LoadInitialCallback<Long, Comment> callback) {
    RestApi restApi = RetrofitApi.create();

    Call<CommentResponse> call = restApi.getComments(FIRST_PAGE, "I want the image_id from activity here");

    call.enqueue(new Callback<CommentResponse>() {
        @Override
        public void onResponse(Call<CommentResponse> call, Response<CommentResponse> response) {

 }

評論DataSourceFactory.java

public class CommentDataFactory extends DataSource.Factory<Long, Comment> {

public MutableLiveData<CommentDataSource> commentLiveDataSource = new MutableLiveData<>();

public CommentDataFactory() {
}

@Override
public DataSource<Long, Comment> create() {
    CommentDataSource commentDataSource = new CommentDataSource();
    commentLiveDataSource.postValue(commentDataSource);
    return commentDataSource;
}

評論查看型號.java

public class CommentViewModel extends ViewModel {

public  LiveData<PagedList<Comment>> commentPagedList;
public  LiveData<CommentDataSource> liveDataSource;
public  LiveData progressBar;

public CommentViewModel(){
    CommentDataFactory commentDataFactory = new CommentDataFactory();
    liveDataSource = commentDataFactory.commentLiveDataSource;

    progressBar = Transformations.switchMap(liveDataSource, CommentDataSource::getProgressBar);

    PagedList.Config config = new PagedList.Config.Builder()
            .setEnablePlaceholders(false)
            .setPageSize(CommentDataSource.PAGE_SIZE)
            .build();

    commentPagedList = new LivePagedListBuilder<>(commentDataFactory, config).build();
}


public LiveData<PagedList<Comment>> getCommentData(){
    return commentPagedList;
}

public void getRefreshedData(){
    getCommentData().getValue().getDataSource().invalidate();
}
}

怎么做。? 我檢查了將變量傳遞給分頁庫 class這正是我想要做的,但我不明白它並且代碼給出了錯誤。 錯誤如

無法創建 class CommentViewModel 的實例

CommentViewModel 沒有零參數構造函數

好吧:

 commentViewmodel1.getCommentData().observe(this, new Observer<PagedList<Comments>>(){
 @Override
public void onChanged(PagedList<Comment> 
    comments){
      adapter.submitList(comments);

    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM