Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public interface PhotosContract {
- interface Model {
- ...
- List<Photo> photos();
- }
- interface View {
- void onPhotosAdded();
- ...
- }
- interface Presenter {
- ...
- List<Photo> photos();
- void onPhotosLoaded();
- ...
- }
- }
- ...
- interface PhotoDataSource {
- List<Photo> photos();
- }
- public class PhotoAdapter extends RecyclerView.Adapter<PhotoAdapter.PhotoHolder> {
- ...
- private PhotoDataSource dataSource;
- public PhotoAdapter(PhotoDataSource dataSource) {
- this.dataSource = dataSource;
- }
- private List<Photo> getPhotos() {
- return dataSource.photos();
- }
- ...
- @Override
- public void onBindViewHolder(@NonNull final PhotoHolder holder, int position) {
- ...
- Photo photo = getPhotos().get(position);
- ...
- }
- @Override
- public int getItemCount() {
- return getPhotos().size();
- }
- ...
- }
- public class WPFragment extends Fragment implements PhotosContract.View {
- ...
- @Nullable
- @Override
- public View onCreateView(
- @NonNull LayoutInflater inflater,
- @Nullable ViewGroup container,
- @Nullable Bundle savedInstanceState
- ) {
- ...
- adapter = new PhotoAdapter(new PhotoDataSource() {
- @Override
- List<Photo> photos() {
- return presenter.photos();
- }
- });
- return view;
- }
- ...
- @Override
- public void onPhotosAdded() {
- adapter.notifyDataSetChanged();
- }
- ...
- }
- ...
- public class PhotosPresenter implements PhotosContract.Presenter {
- ...
- @Override
- public void onPhotosLoaded() {
- if (viewExists()) {
- view.get().onPhotosAdded();
- isLoading = false;
- }
- }
- @Override
- public List<Photo> photos() {
- return model.photos();
- }
- }
- ...
- public class UnsplashService implements PhotosContract.Model {
- private List<Photo> photos = new ArrayList<>();
- @Override
- public void loadPhotos(int page) {
- Call<List<Photo>> call = photosEndPoint.getPhotos(USER_ID, page, ORIENTATION, ORDER);
- Log.d(TAG, "REQUEST: " + call.request().toString());
- call.enqueue(new Callback<List<Photo>>() {
- @Override
- public void onResponse(Call<List<Photo>> call, Response<List<Photo>> response) {
- if (response.isSuccessful()) {
- photos.addAll(response.body());
- presenter.onPhotosLoaded();
- } else {
- presenter.onLoadFailure();
- }
- }
- @Override
- public void onFailure(Call<List<Photo>> call, Throwable t) {
- presenter.onLoadFailure();
- }
- });
- }
- @Override
- public List<Photo> photos() {
- return this.photos;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement