This course will be retired on July 14, 2025.
Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Preview
Video Player
00:00
00:00
00:00
- 2x 2x
- 1.75x 1.75x
- 1.5x 1.5x
- 1.25x 1.25x
- 1.1x 1.1x
- 1x 1x
- 0.75x 0.75x
- 0.5x 0.5x
Integrate the Helper class with the UI code using Activity and Adapter
This video doesn't have any notes.
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
Google Play Services
encompasses a lot of APIs,
0:00
and we needed to handle many edge
cases to ensure our app doesn't crash.
0:03
By building a helper class we've
simplified the interaction with
0:09
Google Play Services library,
making it easier to reuse in future apps.
0:12
Now that our code is connecting
to Google Play Services,
0:18
we'll be able to start using those APIs.
0:21
Let's handle the adapter first.
0:24
Remember the adapter is what
actually creates our views and
0:26
displays them on the screen, and
in on bind view holder, we can hide or
0:29
show views as we need to, so
this is what's really going to
0:34
care about whether Google Play Services
is available or is not available.
0:37
So let's go ahead and
0:41
add in a way to store and know whether
Google Play Services is available or not.
0:43
Let's just store a boolean and we're going
to call it, isGooglePlayServicesAvailable.
0:47
By default, we're just going
to assume it's not available.
0:56
So that way,
we make sure we handle that case.
0:59
So by default we're just gonna say false,
and
1:03
now this is gonna need to know when
Google Play Services becomes available.
1:06
So, in order to know that,
1:10
we're gonna use the interface
that we defined in our helper.
1:12
So remember, let's go to our helper, and
at the top we defined this interface
1:16
called GoogleServicesListener, and it has
a method on connected on disconnected and
1:19
that's what our adapter wants to know is
when it's connected and disconnected.
1:25
So let's going ahead and
have it implement that interface.
1:28
There it is, GoogleServicesListener.
1:32
And now we need to ahead and
use Alt+Return and
1:35
implement those methods on connected and
on disconnected.
1:38
Add those to our class,
we can see it added them down here.
1:42
And what's gonna happen
when we're connected?
1:45
Well, when we're connected, we now know,
okay, Google Play Services is available.
1:50
So first off, let's go ahead and
set that value to be true.
1:55
Okay.
And then, we need to go ahead and redraw
2:00
the items on screen, because by default we
assumed that they weren't connected, so
2:03
we're probably displaying
them in a different way.
2:07
But if they're,
Google Play Services is now available,
2:09
we wanna display the options to
plus one and share to Google+.
2:12
So, we're gonna call notifyDataSetChanged.
2:16
And this will cause this adapter and
recycler re,
2:19
together to redraw those items.
2:23
And the same thing is gonna happen
down here at on disconnected.
2:25
We're just going to say it's
false now it's not available and
2:28
we want to make sure that we update
the recycler view items to reflect that.
2:32
Okay and now that that's happening we
can actually handle the cases where it's
2:37
available and not available in
our on bind view holder method,
2:41
so up in our on bind view holder method,
here we are.
2:45
Right here, we're just gonna
add a place where later on,
2:49
we can check and
display the UI in a different way.
2:53
So we're just gonna put this in here and
make sure we come back to it later on, but
2:56
we'll have an opportunity to say, okay, if
Google Play Services is available, we're
3:01
gonna be able to display that +1 button
once we've added it in to each item, and
3:05
initialize it, initialize the share
button, do whatever we need to do,
3:09
and we're also gonna handle the case
where it's not available, and
3:12
that's gonna be our else case.
3:16
Okay, and because the listening adapter
is the thing that actually gets the data,
3:18
holds our active listings object, displays
the UI, let's go ahead and move the logic
3:22
of loading, doing the load to the network,
calling Etsy.getActiveListings.
3:28
Let's move that into our adapter here.
3:33
So in our adapter, what we're gonna
do is just check, when we call to
3:36
Google Play Services, it's either gonna
come back as connected or disconnected.
3:39
So one of these cases, that's going to be
the case every time we start our activity.
3:43
So, what we're gonna do here is
just check and if it connects but
3:48
we don't have any items yet,
we can use getItemCount equals 0.
3:52
That means we don't have any items yet.
3:55
We're gonna go ahead and now call to
getActiveListings and we're gonna pass in
3:57
this because remember the adapter
itself was the callback for retrofit.
4:02
And we're actually gonna, gonna do
the same thing in disconnected as well.
4:07
So either way,
we still wanna do the load to the API.
4:11
We wanna call that network and
get the response back.
4:15
So, in either case, either we're connected
or disconnected, but if we don't have any
4:18
data to show anyway we need to go
ahead and start a network request.
4:23
So let's go ahead and do that.
4:27
Okay, now that we've moved the network
request into the adaptor and
4:29
the adaptor handles when Google Play
Services is available or not available.
4:33
We need to go ahead and
modify our activity to account for this.
4:37
So, let's go to our activity and
when we initialize our activity
4:41
we were initializing
a calling here into API.
4:46
Well we don't wanna do that anymore.
4:52
We want to now create a Google Services
helper object instead and initialize it.
4:54
So let's go ahead and
add that in to our class.
4:59
So we create our
googleServicesHelper object, and
5:04
then we're always going to initialize it.
5:08
And we need to initialize it
after we create our adapter.
5:11
Because remember, our adapter is
the listener for our googleServicesHelper.
5:14
So after this happens we can go ahead and
call through to create a new helper here.
5:19
And the helper needs the activity.
5:29
That's this.
5:30
And it needs the listener
which is the adapter.
5:31
And now we can remove the call to
getActiveListings, because remember,
5:35
Google Services helper will call
back to the adapters on connected or
5:39
on disconnected, and
that will start the load to the API.
5:42
So, in either case, we don't need
to do that in the activity anymore.
5:46
All we really need to do
is just show loading.
5:49
So let's go ahead and move that in here.
5:52
We're just gonna say,
show loading by default always.
5:55
And now, we're just gonna
move this check to say, okay.
5:59
If the savings and state was not available
and, we did have some saved data.
6:03
We're gonna go ahead and
call through to success.
6:09
And if we look at success,
6:13
we're gonna see it, it, it's actually
calling through to show the list already.
6:14
So, we don't even,
we don't even need that anymore.
6:18
Let's go ahead and remove that as well.
6:20
Okay, and now that we have our
googleServicesHelper object created,
6:22
we need to go ahead and connect or
disconnect, and to do that, remember from
6:26
the documentation, we need to do this
in our onStart and onStop methods.
6:31
So, let's go ahead and
get those methods in here.
6:36
There's onStop and
we gotta find onStart as well, down here.
6:41
Gonna implement those
methods in our class and
6:46
we're just gonna call
through to our helper object.
6:49
And onStop you wanna disconnect.
6:53
And in onStart we want to connect.
6:55
And I'm just gonna go ahead and
6:58
arrange these in the order that
they would typically be called so
6:59
usually you'd connect first and
then disconnect later on.
7:03
Okay and finally we need to handle
those cases where we called through
7:07
to resolve an error or check availability
with the googleServicesHelper.
7:12
And when doing that, remember it
would call back to the activities
7:16
onActivityResult, so
we need to add in that method as well.
7:19
So let's add that in here.
7:24
So onActivityResult, here, yep, and
7:28
we're going to simply pass that
through to our helpers method.
7:31
Called handleActivityResult.
7:37
And we just, remember we were
passing in the exact same parameters
7:39
that were coming through here.
7:42
Perfect.
7:46
And now, this will be able
to handle those cases where
7:47
the result of the intent came back, it was
good, handle the result, reconnect, etc.
7:51
Let's run the app and make sure everything
is working before taking a break.
7:57
So we'll run it on my emulator, and
we're gonna see when it runs, oh,
8:03
it has stopped, and that's because
we can see right here that there's
8:07
an illegal argument
exception that gets thrown,
8:11
and in our googleServicesHelper,
it's telling us that we must call add API
8:14
to add at least one API before
connecting to Google Play Services.
8:18
So, right now this isn't gonna be working,
but in the next stage we're gonna add in
8:22
the Google Plus API and
we're gonna get this working.
8:26
And we're gonna see those
listings come up, and
8:29
be able to display that plus one and
Share button.
8:31
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up