From 3145651d3db89adb2dc4d44b6ffde805431731bc Mon Sep 17 00:00:00 2001 From: nielsbril Date: Sun, 6 Nov 2016 15:49:34 +0100 Subject: [PATCH 1/2] Interface toegevoegd --- .../watchfriends/helper/Interfaces.java | 9 +++++++++ .../watchfriends/view/MainActivity.java | 19 +++++++++++++++++++ .../viewmodel/EpisodeFragmentViewModel.java | 12 +++++++----- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/helper/Interfaces.java b/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/helper/Interfaces.java index 0739f4b..92c6335 100644 --- a/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/helper/Interfaces.java +++ b/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/helper/Interfaces.java @@ -1,9 +1,18 @@ package nmct.jaspernielsmichielhein.watchfriends.helper; +import android.net.Uri; +import android.support.design.widget.FloatingActionButton; + import nmct.jaspernielsmichielhein.watchfriends.model.Episode; import nmct.jaspernielsmichielhein.watchfriends.model.Series; public class Interfaces { + public interface onHeaderChanged { + void onSetTitle(String title); + void onSetImage(Uri uri); + FloatingActionButton onGetActionButton(); + } + public interface onSeriesSelectedListener { void onSeriesSelected(Series series); } diff --git a/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/view/MainActivity.java b/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/view/MainActivity.java index f189b6e..c2f878d 100644 --- a/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/view/MainActivity.java +++ b/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/view/MainActivity.java @@ -7,6 +7,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.support.design.widget.AppBarLayout; import android.support.design.widget.CollapsingToolbarLayout; @@ -26,6 +27,8 @@ import android.widget.SearchView; import android.widget.Toast; +import com.squareup.picasso.Picasso; + import nmct.jaspernielsmichielhein.watchfriends.R; import nmct.jaspernielsmichielhein.watchfriends.helper.Interfaces; import nmct.jaspernielsmichielhein.watchfriends.model.Episode; @@ -35,6 +38,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, SearchView.OnQueryTextListener, + Interfaces.onHeaderChanged, Interfaces.onSeriesSelectedListener, Interfaces.onEpisodeSelectedListener { @@ -198,6 +202,21 @@ public boolean onQueryTextChange(String newText) { return false; } + @Override + public void onSetTitle(String title) { + setTitle(title); + } + + @Override + public void onSetImage(Uri uri) { + Picasso.with(this).load(uri).into(getHeaderImage()); + } + + @Override + public FloatingActionButton onGetActionButton() { + return getActionButton(); + } + public void onSeriesSelected(Series series) { } diff --git a/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/viewmodel/EpisodeFragmentViewModel.java b/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/viewmodel/EpisodeFragmentViewModel.java index e7c2c83..ea5f6bb 100644 --- a/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/viewmodel/EpisodeFragmentViewModel.java +++ b/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/viewmodel/EpisodeFragmentViewModel.java @@ -16,10 +16,13 @@ import nmct.jaspernielsmichielhein.watchfriends.BR; import nmct.jaspernielsmichielhein.watchfriends.R; import nmct.jaspernielsmichielhein.watchfriends.databinding.FragmentEpisodeBinding; +import nmct.jaspernielsmichielhein.watchfriends.helper.Interfaces; import nmct.jaspernielsmichielhein.watchfriends.model.Episode; import nmct.jaspernielsmichielhein.watchfriends.view.MainActivity; public class EpisodeFragmentViewModel extends BaseObservable { + private Interfaces.onHeaderChanged mListener; + private Context context; private FragmentEpisodeBinding fragmentEpisodeBinding; @@ -40,6 +43,7 @@ public EpisodeFragmentViewModel(Context context, FragmentEpisodeBinding fragment this.context = context; this.fragmentEpisodeBinding = fragmentEpisodeBinding; this.episode = episode; + mListener = (Interfaces.onHeaderChanged) context; } public void loadEpisode() { @@ -49,12 +53,10 @@ public void loadEpisode() { } private void setHeader() { - MainActivity mainActivity = (MainActivity) context; - mainActivity.setTitle(episode.getShortcode()); - - Picasso.with(context).load(episode.getImage_uri()).into(mainActivity.getHeaderImage()); + mListener.onSetTitle(episode.getShortcode()); + mListener.onSetImage(episode.getImage_uri()); - final FloatingActionButton fab = mainActivity.getActionButton(); + final FloatingActionButton fab = mListener.onGetActionButton(); initFloatingActionButton(fab); } From 934218b25e2ecb78d8401e6f5a21c5e2914d5709 Mon Sep 17 00:00:00 2001 From: ExCellRaD Date: Sun, 6 Nov 2016 17:57:32 +0100 Subject: [PATCH 2/2] header interface in viewmodel --- WatchFriends/app/build.gradle | 1 + .../viewmodel/EpisodeFragmentViewModel.java | 6 +++++- .../viewmodel/SeasonFragmentViewModel.java | 16 ++++++++++------ 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/WatchFriends/app/build.gradle b/WatchFriends/app/build.gradle index 86a00eb..bcabe9f 100644 --- a/WatchFriends/app/build.gradle +++ b/WatchFriends/app/build.gradle @@ -24,6 +24,7 @@ android { + dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.1', { diff --git a/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/viewmodel/EpisodeFragmentViewModel.java b/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/viewmodel/EpisodeFragmentViewModel.java index 76798ef..4b90216 100644 --- a/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/viewmodel/EpisodeFragmentViewModel.java +++ b/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/viewmodel/EpisodeFragmentViewModel.java @@ -43,7 +43,11 @@ public EpisodeFragmentViewModel(Context context, FragmentEpisodeBinding fragment this.context = context; this.fragmentEpisodeBinding = fragmentEpisodeBinding; this.episode = episode; - mListener = (Interfaces.onHeaderChanged) context; + if (context instanceof Interfaces.onHeaderChanged) { + mListener = (Interfaces.onHeaderChanged) context; + } else { + throw new RuntimeException(context.toString() + " must implement onHeaderChanged"); + } } public void loadEpisode() { diff --git a/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/viewmodel/SeasonFragmentViewModel.java b/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/viewmodel/SeasonFragmentViewModel.java index 254e730..810c4be 100644 --- a/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/viewmodel/SeasonFragmentViewModel.java +++ b/WatchFriends/app/src/main/java/nmct/jaspernielsmichielhein/watchfriends/viewmodel/SeasonFragmentViewModel.java @@ -11,6 +11,7 @@ import nmct.jaspernielsmichielhein.watchfriends.BR; import nmct.jaspernielsmichielhein.watchfriends.databinding.FragmentSeasonBinding; import nmct.jaspernielsmichielhein.watchfriends.helper.ApiHelper; +import nmct.jaspernielsmichielhein.watchfriends.helper.Interfaces; import nmct.jaspernielsmichielhein.watchfriends.model.Season; import nmct.jaspernielsmichielhein.watchfriends.view.MainActivity; import rx.android.schedulers.AndroidSchedulers; @@ -18,6 +19,7 @@ import rx.schedulers.Schedulers; public class SeasonFragmentViewModel extends BaseObservable { + private final Interfaces.onHeaderChanged mListener; private Context context; private FragmentSeasonBinding fragmentSeasonBinding; @@ -42,6 +44,11 @@ public SeasonFragmentViewModel(Context context, FragmentSeasonBinding fragmentSe this.seriesName = seriesName; this.seriesId = seriesId; this.seasonNumber = seasonNumber; + if (context instanceof Interfaces.onHeaderChanged) { + mListener = (Interfaces.onHeaderChanged) context; + } else { + throw new RuntimeException(context.toString() + " must implement onHeaderChanged"); + } } public void loadSeason() { @@ -61,12 +68,9 @@ public void call(Season returnedSeason) { } private void setHeader() { - MainActivity mainActivity = (MainActivity) context; - mainActivity.setTitle(seriesName); - - Picasso.with(context).load(season.getImage_uri()).into(mainActivity.getHeaderImage()); - - final FloatingActionButton fab = mainActivity.getActionButton(); + mListener.onSetTitle(seriesName); + mListener.onSetImage(season.getImage_uri()); + final FloatingActionButton fab = mListener.onGetActionButton(); fab.setVisibility(View.INVISIBLE); } } \ No newline at end of file