Skip to content

Commit

Permalink
Create HomeTimelineFragment that extends TweetsListFragment
Browse files Browse the repository at this point in the history
  • Loading branch information
tejen committed Jul 6, 2017
1 parent 09bf6b7 commit 7339fa2
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import org.tejen.codepathandroid.twitter.fragments.HomeTimelineFragment;
import org.tejen.codepathandroid.twitter.fragments.NotificationsFragment;
import org.tejen.codepathandroid.twitter.fragments.TweetsListFragment;

/**
* Created by tejen on 7/2/17.
Expand All @@ -31,7 +31,7 @@ public int getCount() {
public Fragment getItem(int position) {
switch (position) {
case 0:
return new TweetsListFragment();
return new HomeTimelineFragment();
default:
return NotificationsFragment.newInstance(position + 1);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package org.tejen.codepathandroid.twitter.fragments;

import android.util.Log;

import com.loopj.android.http.JsonHttpResponseHandler;

import org.json.JSONArray;

import cz.msebera.android.httpclient.Header;

/**
* Created by tejen on 7/6/17.
*/

public class HomeTimelineFragment extends TweetsListFragment {

@Override
void finishTimelineFetch(long max_id, final boolean fetchMore) {
client.getHomeTimeline(max_id, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
replaceAdapterWith(response, fetchMore);
}

public void onFailure(Throwable e) {
Log.d("DEBUG", "Fetch timeline error: " + e.toString());
}

});
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,11 @@
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.loopj.android.http.JsonHttpResponseHandler;

import org.json.JSONArray;
import org.json.JSONException;
import org.tejen.codepathandroid.twitter.R;
Expand All @@ -28,11 +25,9 @@
import java.text.ParseException;
import java.util.ArrayList;

import cz.msebera.android.httpclient.Header;

public class TweetsListFragment extends Fragment implements MainActivity.TweetUpdateListener, TweetAdapter.TweetItemListener {
public abstract class TweetsListFragment extends Fragment implements MainActivity.TweetUpdateListener, TweetAdapter.TweetItemListener {

private TwitterClient client;
TwitterClient client;
TweetAdapter tweetAdapter;
ArrayList<Tweet> tweets;
RecyclerView rvTweets;
Expand Down Expand Up @@ -114,10 +109,9 @@ public void onComposedNewTweet(Tweet newTweet) {
Toast.makeText(getActivity(), "Posted New Tweet!", Toast.LENGTH_SHORT).show();
}

public void fetchTimelineAsync(final boolean fetchMore) {
public void fetchTimelineAsync(boolean fetchMore) {
// Send the network request to fetch the updated data
// `client` here is an instance of Android Async HTTP
// getHomeTimeline is an example endpoint.

long max_id;

Expand All @@ -128,30 +122,26 @@ public void fetchTimelineAsync(final boolean fetchMore) {
max_id--; // Twitter max_id param will otherwise include the tweet matching id in max_id param
}

client.getHomeTimeline(max_id, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
// Remember to CLEAR OUT old items before appending in the new ones
// ...the data has come back, add new items to your adapter...
try {
if(fetchMore == false) {
tweetAdapter.clear();
}
tweetAdapter.addAll(Tweet.multipleFromJSON(response));
// Now we call setRefreshing(false) to signal refresh has finished
swipeContainer.setRefreshing(false);
} catch (JSONException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
finishTimelineFetch(max_id, fetchMore);
}

public void onFailure(Throwable e) {
Log.d("DEBUG", "Fetch timeline error: " + e.toString());
}
abstract void finishTimelineFetch(long max_id, final boolean fetchMore);

});
void replaceAdapterWith(JSONArray response, boolean fetchMore) {
// Remember to CLEAR OUT old items before appending in the new ones
// ...the data has come back, add new items to your adapter...
try {
if(fetchMore == false) {
tweetAdapter.clear();
}
tweetAdapter.addAll(Tweet.multipleFromJSON(response));
// Now we call setRefreshing(false) to signal refresh has finished
swipeContainer.setRefreshing(false);
} catch (JSONException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}

@Override
Expand Down

0 comments on commit 7339fa2

Please sign in to comment.