Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

import android.annotation.SuppressLint;
import android.databinding.ObservableBoolean;
import android.databinding.ObservableField;

import com.example.yeseul.movieapp.data.source.movie.MovieRepository;
import com.example.yeseul.movieapp.mapper.MovieMapper;
import com.example.yeseul.movieapp.pojo.Movie;
import com.example.yeseul.movieapp.view.adapter.AdapterContract;

import java.util.List;
import java.util.Map;

import io.reactivex.android.schedulers.AndroidSchedulers;

Expand All @@ -26,6 +26,7 @@ public class MainPresenter implements MainContract.Presenter {
private final int PAGE_UNIT = 20; // 한번에 가져올 데이터 개수
private int currentPage = 0; // 현재 페이지 index
private boolean isEndOfPage = false; // 페이지 끝 flag
private final String FIRST_OF_PAGE = "1";

public MainPresenter(MainContract.View view, MovieRepository repository) {
this.view = view;
Expand All @@ -50,6 +51,8 @@ public void loadItems(boolean isRefresh) {
// 마지막 페이지가 아니고 로딩중 아닌 경우 getMovieList 호출
if(!isLoading.get() && !isEndOfPage) {
getMovieList();
} else if(isRefresh) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

loadItems() 메서드에서 isLoading.get() == true이면 아이템 클리어 동작도 안하게 하는 방법은 어떨까요?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저는 error를 해결하기 위해 getMovieList() 함수 내부를 수정하였습니다.
다만, 해당 부분만 수정하여도 정상작동되기에 추가적인 처리를 해주지 않았습니다.
말씀해주신 내용을 반영하는 것도 좋을 것으로 판단됩니다. 감사합니다.

getMovieList();
}
}

Expand All @@ -76,7 +79,8 @@ private void getMovieList(){

isLoading.set(true);

repository.searchMovies(MovieMapper.toRequest(searchKey, PAGE_UNIT, (PAGE_UNIT * currentPage++) + 1))
Map<String, String> request = MovieMapper.toRequest(searchKey, PAGE_UNIT, (PAGE_UNIT * currentPage++) + 1);
repository.searchMovies(request)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(response -> {

Expand All @@ -98,6 +102,14 @@ private void getMovieList(){
isEndOfPage = true;
}

// 요청했던 page 가 첫번째 page 일 경우, adapter 의 list 를 clear
String requestedPage = request.get(MovieMapper.QUERY_STRING_START);
if(requestedPage != null && requestedPage.equals(FIRST_OF_PAGE)) {
if(adapterModel.getItemCount() != 0) {
adapterModel.clearItems();
}
}

// 어댑터에 리스트 추가
adapterModel.addItems(movieList);

Expand Down