Commit f11c0345 authored by Sajal Narang's avatar Sajal Narang

Add infinite scroll to Internship Blog and News

parent 3fad291c
...@@ -3,9 +3,11 @@ package app.insti.adapter; ...@@ -3,9 +3,11 @@ package app.insti.adapter;
import android.content.Context; import android.content.Context;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import java.text.DateFormat; import java.text.DateFormat;
...@@ -18,9 +20,12 @@ import java.util.Locale; ...@@ -18,9 +20,12 @@ import java.util.Locale;
import app.insti.ItemClickListener; import app.insti.ItemClickListener;
import app.insti.R; import app.insti.R;
import app.insti.data.NewsArticle; import app.insti.data.NewsArticle;
import app.insti.fragment.NewsFragment;
import ru.noties.markwon.Markwon; import ru.noties.markwon.Markwon;
public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder> { public class NewsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final int VIEW_ITEM = 1;
private final int VIEW_PROG = 0;
private List<NewsArticle> newsArticles; private List<NewsArticle> newsArticles;
private Context context; private Context context;
...@@ -31,46 +36,71 @@ public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder> { ...@@ -31,46 +36,71 @@ public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder> {
this.itemClickListener = itemClickListener; this.itemClickListener = itemClickListener;
} }
public List<NewsArticle> getNewsArticles() {
return newsArticles;
}
public void setNewsArticles(List<NewsArticle> newsArticles) {
this.newsArticles = newsArticles;
}
@NonNull @NonNull
@Override @Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
context = parent.getContext(); context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context); if (viewType == VIEW_ITEM) {
View newsArticleView = inflater.inflate(R.layout.news_article_card, parent, false); LayoutInflater inflater = LayoutInflater.from(context);
View postView = inflater.inflate(R.layout.news_article_card, parent, false);
final NewsAdapter.ViewHolder articleViewHolder = new NewsAdapter.ViewHolder(newsArticleView);
newsArticleView.setOnClickListener(new View.OnClickListener() { final NewsAdapter.ViewHolder postViewHolder = new NewsAdapter.ViewHolder(postView);
@Override postView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) { @Override
itemClickListener.onItemClick(v, articleViewHolder.getAdapterPosition()); public void onClick(View v) {
} itemClickListener.onItemClick(v, postViewHolder.getAdapterPosition());
}); }
return articleViewHolder; });
return postViewHolder;
} else {
LayoutInflater inflater = LayoutInflater.from(context);
View loadView = inflater.inflate(R.layout.blog_load_item, parent, false);
final NewsAdapter.ViewHolder postViewHolder = new NewsAdapter.ViewHolder(loadView);
return new NewsAdapter.ProgressViewHolder(loadView);
}
} }
@Override @Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) { public void onBindViewHolder(@NonNull RecyclerView.ViewHolder recyclerHolder, int position) {
NewsArticle article = newsArticles.get(position); if (recyclerHolder instanceof ViewHolder) {
Markwon.setMarkdown(holder.articleTitle, article.getTitle()); ViewHolder holder = (ViewHolder) recyclerHolder;
holder.articleBody.setText(article.getBody().getBodyName()); NewsArticle article = newsArticles.get(position);
Markwon.setMarkdown(holder.articleTitle, article.getTitle());
Date publishedDate = article.getPublished(); holder.articleBody.setText(article.getBody().getBodyName());
Calendar calendar = Calendar.getInstance();
calendar.setTime(publishedDate); Date publishedDate = article.getPublished();
DateFormat displayFormat; Calendar calendar = Calendar.getInstance();
if (calendar.get(Calendar.YEAR) == Calendar.getInstance().get(Calendar.YEAR)) { calendar.setTime(publishedDate);
displayFormat = new SimpleDateFormat("EEE, MMM d, HH:mm", Locale.US); DateFormat displayFormat;
if (calendar.get(Calendar.YEAR) == Calendar.getInstance().get(Calendar.YEAR)) {
displayFormat = new SimpleDateFormat("EEE, MMM d, HH:mm", Locale.US);
} else {
displayFormat = new SimpleDateFormat("EEE, MMM d, ''yy, HH:mm", Locale.US);
}
holder.articlePublished.setText(displayFormat.format(publishedDate));
Markwon.setMarkdown(holder.articleContent, article.getContent());
} else { } else {
displayFormat = new SimpleDateFormat("EEE, MMM d, ''yy, HH:mm", Locale.US); ((ProgressViewHolder) recyclerHolder).progressBar.setIndeterminate(true);
} }
holder.articlePublished.setText(displayFormat.format(publishedDate)); }
Markwon.setMarkdown(holder.articleContent, article.getContent()); @Override
public int getItemViewType(int position) {
return newsArticles.size() > position ? VIEW_ITEM : VIEW_PROG;
} }
@Override @Override
public int getItemCount() { public int getItemCount() {
return newsArticles.size(); return NewsFragment.showLoader ? (newsArticles.size() + 1) : newsArticles.size();
} }
public class ViewHolder extends RecyclerView.ViewHolder { public class ViewHolder extends RecyclerView.ViewHolder {
...@@ -88,4 +118,12 @@ public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder> { ...@@ -88,4 +118,12 @@ public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.ViewHolder> {
articleContent = (TextView) itemView.findViewById(R.id.article_content); articleContent = (TextView) itemView.findViewById(R.id.article_content);
} }
} }
public static class ProgressViewHolder extends RecyclerView.ViewHolder {
public ProgressBar progressBar;
public ProgressViewHolder(View v) {
super(v);
progressBar = (ProgressBar)v.findViewById(R.id.blog_load_item);
}
}
} }
...@@ -25,6 +25,7 @@ import ru.noties.markwon.Markwon; ...@@ -25,6 +25,7 @@ import ru.noties.markwon.Markwon;
public class PlacementBlogAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { public class PlacementBlogAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final int VIEW_ITEM = 1; private final int VIEW_ITEM = 1;
private final int VIEW_PROG = 0; private final int VIEW_PROG = 0;
public List<PlacementBlogPost> getPosts() { public List<PlacementBlogPost> getPosts() {
return posts; return posts;
} }
...@@ -44,8 +45,8 @@ public class PlacementBlogAdapter extends RecyclerView.Adapter<RecyclerView.View ...@@ -44,8 +45,8 @@ public class PlacementBlogAdapter extends RecyclerView.Adapter<RecyclerView.View
@Override @Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if(viewType==VIEW_ITEM){ context = parent.getContext();
context = parent.getContext(); if (viewType == VIEW_ITEM) {
LayoutInflater inflater = LayoutInflater.from(context); LayoutInflater inflater = LayoutInflater.from(context);
View postView = inflater.inflate(R.layout.blog_post_card, parent, false); View postView = inflater.inflate(R.layout.blog_post_card, parent, false);
...@@ -57,29 +58,29 @@ public class PlacementBlogAdapter extends RecyclerView.Adapter<RecyclerView.View ...@@ -57,29 +58,29 @@ public class PlacementBlogAdapter extends RecyclerView.Adapter<RecyclerView.View
} }
}); });
return postViewHolder; return postViewHolder;
} } else {
else{ LayoutInflater inflater = LayoutInflater.from(context);
LayoutInflater inflater=LayoutInflater.from(context); View loadView = inflater.inflate(R.layout.blog_load_item, parent, false);
View loadView=inflater.inflate(R.layout.blog_load_item,parent,false);
final PlacementBlogAdapter.ViewHolder postViewHolder = new PlacementBlogAdapter.ViewHolder(loadView); final PlacementBlogAdapter.ViewHolder postViewHolder = new PlacementBlogAdapter.ViewHolder(loadView);
return new PlacementBlogAdapter.ProgressViewHolder(loadView); return new PlacementBlogAdapter.ProgressViewHolder(loadView);
} }
} }
@Override @Override
public int getItemViewType(int position) { public int getItemViewType(int position) {
Log.d("position", String.valueOf(position)); return posts.size() > position ? VIEW_ITEM : VIEW_PROG;
return posts.size()> position ? VIEW_ITEM : VIEW_PROG;
} }
@Override @Override
public int getItemCount() { public int getItemCount() {
return PlacementBlogFragment.showLoader? (posts.size()+1):posts.size(); return PlacementBlogFragment.showLoader ? (posts.size() + 1) : posts.size();
} }
@Override @Override
public void onBindViewHolder(RecyclerView.ViewHolder recycleholder, int position) { public void onBindViewHolder(RecyclerView.ViewHolder recyclerHolder, int position) {
if(recycleholder instanceof ViewHolder){ if (recyclerHolder instanceof ViewHolder) {
ViewHolder holder=(ViewHolder)recycleholder; ViewHolder holder = (ViewHolder) recyclerHolder;
PlacementBlogPost post = posts.get(position); PlacementBlogPost post = posts.get(position);
Markwon.setMarkdown(holder.postTitle, post.getTitle()); Markwon.setMarkdown(holder.postTitle, post.getTitle());
...@@ -95,9 +96,8 @@ public class PlacementBlogAdapter extends RecyclerView.Adapter<RecyclerView.View ...@@ -95,9 +96,8 @@ public class PlacementBlogAdapter extends RecyclerView.Adapter<RecyclerView.View
holder.postPublished.setText(displayFormat.format(publishedDate)); holder.postPublished.setText(displayFormat.format(publishedDate));
Markwon.setMarkdown(holder.postContent, post.getContent()); Markwon.setMarkdown(holder.postContent, post.getContent());
} } else {
else{ ((ProgressViewHolder) recyclerHolder).progressBar.setIndeterminate(true);
((ProgressViewHolder)recycleholder).progressBar.setIndeterminate(true);
} }
} }
...@@ -115,11 +115,13 @@ public class PlacementBlogAdapter extends RecyclerView.Adapter<RecyclerView.View ...@@ -115,11 +115,13 @@ public class PlacementBlogAdapter extends RecyclerView.Adapter<RecyclerView.View
postContent = (TextView) itemView.findViewById(R.id.post_content); postContent = (TextView) itemView.findViewById(R.id.post_content);
} }
} }
public static class ProgressViewHolder extends RecyclerView.ViewHolder { public static class ProgressViewHolder extends RecyclerView.ViewHolder {
public ProgressBar progressBar; public ProgressBar progressBar;
public ProgressViewHolder(View v) { public ProgressViewHolder(View v) {
super(v); super(v);
progressBar = (ProgressBar)v.findViewById(R.id.blog_load_item); progressBar = (ProgressBar) v.findViewById(R.id.blog_load_item);
} }
} }
......
...@@ -2,9 +2,11 @@ package app.insti.adapter; ...@@ -2,9 +2,11 @@ package app.insti.adapter;
import android.content.Context; import android.content.Context;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import java.text.DateFormat; import java.text.DateFormat;
...@@ -17,9 +19,12 @@ import java.util.Locale; ...@@ -17,9 +19,12 @@ import java.util.Locale;
import app.insti.ItemClickListener; import app.insti.ItemClickListener;
import app.insti.R; import app.insti.R;
import app.insti.data.TrainingBlogPost; import app.insti.data.TrainingBlogPost;
import app.insti.fragment.TrainingBlogFragment;
import ru.noties.markwon.Markwon; import ru.noties.markwon.Markwon;
public class TrainingBlogAdapter extends RecyclerView.Adapter<TrainingBlogAdapter.ViewHolder> { public class TrainingBlogAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final int VIEW_ITEM = 1;
private final int VIEW_PROG = 0;
private List<TrainingBlogPost> posts; private List<TrainingBlogPost> posts;
private Context context; private Context context;
...@@ -30,44 +35,69 @@ public class TrainingBlogAdapter extends RecyclerView.Adapter<TrainingBlogAdapte ...@@ -30,44 +35,69 @@ public class TrainingBlogAdapter extends RecyclerView.Adapter<TrainingBlogAdapte
this.itemClickListener = itemClickListener; this.itemClickListener = itemClickListener;
} }
public List<TrainingBlogPost> getPosts() {
return posts;
}
public void setPosts(List<TrainingBlogPost> posts) {
this.posts = posts;
}
@Override @Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
context = parent.getContext(); context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context); if (viewType == VIEW_ITEM) {
View postView = inflater.inflate(R.layout.blog_post_card, parent, false); LayoutInflater inflater = LayoutInflater.from(context);
View postView = inflater.inflate(R.layout.blog_post_card, parent, false);
final TrainingBlogAdapter.ViewHolder postViewHolder = new TrainingBlogAdapter.ViewHolder(postView);
postView.setOnClickListener(new View.OnClickListener() { final TrainingBlogAdapter.ViewHolder postViewHolder = new TrainingBlogAdapter.ViewHolder(postView);
@Override postView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) { @Override
itemClickListener.onItemClick(v, postViewHolder.getAdapterPosition()); public void onClick(View v) {
} itemClickListener.onItemClick(v, postViewHolder.getAdapterPosition());
}); }
return postViewHolder; });
return postViewHolder;
} else {
LayoutInflater inflater = LayoutInflater.from(context);
View loadView = inflater.inflate(R.layout.blog_load_item, parent, false);
final TrainingBlogAdapter.ViewHolder postViewHolder = new TrainingBlogAdapter.ViewHolder(loadView);
return new TrainingBlogAdapter.ProgressViewHolder(loadView);
}
} }
@Override @Override
public void onBindViewHolder(ViewHolder holder, int position) { public void onBindViewHolder(RecyclerView.ViewHolder recyclerHolder, int position) {
TrainingBlogPost post = posts.get(position); if (recyclerHolder instanceof ViewHolder) {
Markwon.setMarkdown(holder.postTitle, post.getTitle()); ViewHolder holder = (ViewHolder) recyclerHolder;
TrainingBlogPost post = posts.get(position);
Date publishedDate = post.getPublished(); Markwon.setMarkdown(holder.postTitle, post.getTitle());
Calendar calendar = Calendar.getInstance();
calendar.setTime(publishedDate); Date publishedDate = post.getPublished();
DateFormat displayFormat; Calendar calendar = Calendar.getInstance();
if (calendar.get(Calendar.YEAR) == Calendar.getInstance().get(Calendar.YEAR)) { calendar.setTime(publishedDate);
displayFormat = new SimpleDateFormat("EEE, MMM d, HH:mm", Locale.US); DateFormat displayFormat;
if (calendar.get(Calendar.YEAR) == Calendar.getInstance().get(Calendar.YEAR)) {
displayFormat = new SimpleDateFormat("EEE, MMM d, HH:mm", Locale.US);
} else {
displayFormat = new SimpleDateFormat("EEE, MMM d, ''yy, HH:mm", Locale.US);
}
holder.postPublished.setText(displayFormat.format(publishedDate));
Markwon.setMarkdown(holder.postContent, post.getContent());
} else { } else {
displayFormat = new SimpleDateFormat("EEE, MMM d, ''yy, HH:mm", Locale.US); ((ProgressViewHolder) recyclerHolder).progressBar.setIndeterminate(true);
} }
holder.postPublished.setText(displayFormat.format(publishedDate)); }
Markwon.setMarkdown(holder.postContent, post.getContent()); @Override
public int getItemViewType(int position) {
return posts.size() > position ? VIEW_ITEM : VIEW_PROG;
} }
@Override @Override
public int getItemCount() { public int getItemCount() {
return posts.size(); return TrainingBlogFragment.showLoader ? (posts.size() + 1) : posts.size();
} }
public class ViewHolder extends RecyclerView.ViewHolder { public class ViewHolder extends RecyclerView.ViewHolder {
...@@ -83,4 +113,12 @@ public class TrainingBlogAdapter extends RecyclerView.Adapter<TrainingBlogAdapte ...@@ -83,4 +113,12 @@ public class TrainingBlogAdapter extends RecyclerView.Adapter<TrainingBlogAdapte
postContent = (TextView) itemView.findViewById(R.id.post_content); postContent = (TextView) itemView.findViewById(R.id.post_content);
} }
} }
public static class ProgressViewHolder extends RecyclerView.ViewHolder {
public ProgressBar progressBar;
public ProgressViewHolder(View v) {
super(v);
progressBar = (ProgressBar)v.findViewById(R.id.blog_load_item);
}
}
} }
...@@ -64,13 +64,13 @@ public interface RetrofitInterface { ...@@ -64,13 +64,13 @@ public interface RetrofitInterface {
Call<List<PlacementBlogPost>> getPlacementBlogFeed(@Header("Cookie") String sessionID, @Query("from") int from,@Query("num") int num); Call<List<PlacementBlogPost>> getPlacementBlogFeed(@Header("Cookie") String sessionID, @Query("from") int from,@Query("num") int num);
@GET("training-blog") @GET("training-blog")
Call<List<TrainingBlogPost>> getTrainingBlogFeed(@Header("Cookie") String sessionID); Call<List<TrainingBlogPost>> getTrainingBlogFeed(@Header("Cookie") String sessionID, @Query("from") int from,@Query("num") int num);
@GET("mess") @GET("mess")
Call<List<HostelMessMenu>> getInstituteMessMenu(@Header("Cookie") String sessionID); Call<List<HostelMessMenu>> getInstituteMessMenu(@Header("Cookie") String sessionID);
@GET("news") @GET("news")
Call<List<NewsArticle>> getNews(@Header("Cookie") String sessionID); Call<List<NewsArticle>> getNews(@Header("Cookie") String sessionID, @Query("from") int from,@Query("num") int num);
@GET("notifications") @GET("notifications")
Call<List<Notification>> getNotifications(@Header("Cookie") String sessionID); Call<List<Notification>> getNotifications(@Header("Cookie") String sessionID);
......
...@@ -15,6 +15,7 @@ import android.view.LayoutInflater; ...@@ -15,6 +15,7 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import app.insti.ActivityBuffer; import app.insti.ActivityBuffer;
...@@ -39,6 +40,7 @@ public class NewsFragment extends BaseFragment { ...@@ -39,6 +40,7 @@ public class NewsFragment extends BaseFragment {
private SwipeRefreshLayout newsSwipeRefreshLayout; private SwipeRefreshLayout newsSwipeRefreshLayout;
private AppDatabase appDatabase; private AppDatabase appDatabase;
private boolean freshNewsDisplayed = false; private boolean freshNewsDisplayed = false;
public static boolean showLoader = true;
public NewsFragment() { public NewsFragment() {
// Required empty public constructor // Required empty public constructor
...@@ -75,7 +77,7 @@ public class NewsFragment extends BaseFragment { ...@@ -75,7 +77,7 @@ public class NewsFragment extends BaseFragment {
private void updateNews() { private void updateNews() {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class); RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.getNews("sessionid=" + getArguments().getString(Constants.SESSION_ID)).enqueue(new Callback<List<NewsArticle>>() { retrofitInterface.getNews("sessionid=" + getArguments().getString(Constants.SESSION_ID), 0, 20).enqueue(new Callback<List<NewsArticle>>() {
@Override @Override
public void onResponse(Call<List<NewsArticle>> call, Response<List<NewsArticle>> response) { public void onResponse(Call<List<NewsArticle>> call, Response<List<NewsArticle>> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
...@@ -116,6 +118,43 @@ public class NewsFragment extends BaseFragment { ...@@ -116,6 +118,43 @@ public class NewsFragment extends BaseFragment {
newsRecyclerView = getActivity().findViewById(R.id.news_recycler_view); newsRecyclerView = getActivity().findViewById(R.id.news_recycler_view);
newsRecyclerView.setAdapter(newsAdapter); newsRecyclerView.setAdapter(newsAdapter);
newsRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); newsRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
newsRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
// multiple calls should not be made
boolean loading = false;
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if (dy > 0) {
LinearLayoutManager layoutManager = (LinearLayoutManager) newsRecyclerView.getLayoutManager();
if (((layoutManager.getChildCount() + layoutManager.findFirstVisibleItemPosition()) > (layoutManager.getItemCount() - 5)) && (!loading)) {
loading = true;
View v = getActivity().findViewById(R.id.training_feed_swipe_refresh_layout);
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.getNews("sessionid=" + getArguments().getString(Constants.SESSION_ID), layoutManager.getItemCount(), 10).enqueue(new Callback<List<NewsArticle>>() {
@Override
public void onResponse(Call<List<NewsArticle>> call, Response<List<NewsArticle>> response) {
loading = false;
List<NewsArticle> newsArticles = (ArrayList<NewsArticle>) newsAdapter.getNewsArticles();
newsArticles.addAll(response.body());
if (response.body().size() == 0) {
showLoader = false;
}
newsAdapter.setNewsArticles(newsArticles);
newsAdapter.notifyDataSetChanged();
// new updateDatabase().execute(blogPosts);
}
@Override
public void onFailure(Call<List<NewsArticle>> call, Throwable t) {
loading = false;
}
});
}
}
}
});
} catch (NullPointerException e) { } catch (NullPointerException e) {
e.printStackTrace(); e.printStackTrace();
} }
......
...@@ -2,7 +2,6 @@ package app.insti.fragment; ...@@ -2,7 +2,6 @@ package app.insti.fragment;
import android.app.Activity; import android.app.Activity;
import android.app.LauncherActivity;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.AsyncTask; import android.os.AsyncTask;
...@@ -12,13 +11,10 @@ import android.support.v4.widget.SwipeRefreshLayout; ...@@ -12,13 +11,10 @@ import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.google.android.gms.common.util.ListUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -44,7 +40,7 @@ public class PlacementBlogFragment extends BaseFragment { ...@@ -44,7 +40,7 @@ public class PlacementBlogFragment extends BaseFragment {
private SwipeRefreshLayout feedSwipeRefreshLayout; private SwipeRefreshLayout feedSwipeRefreshLayout;
private AppDatabase appDatabase; private AppDatabase appDatabase;
private boolean freshBlogDisplayed = false; private boolean freshBlogDisplayed = false;
public static boolean showLoader=true; public static boolean showLoader = true;
public PlacementBlogFragment() { public PlacementBlogFragment() {
...@@ -82,7 +78,7 @@ public class PlacementBlogFragment extends BaseFragment { ...@@ -82,7 +78,7 @@ public class PlacementBlogFragment extends BaseFragment {
private void updatePlacementFeed() { private void updatePlacementFeed() {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class); RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.getPlacementBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID),0,20).enqueue(new Callback<List<PlacementBlogPost>>() { retrofitInterface.getPlacementBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID), 0, 20).enqueue(new Callback<List<PlacementBlogPost>>() {
@Override @Override
public void onResponse(Call<List<PlacementBlogPost>> call, Response<List<PlacementBlogPost>> response) { public void onResponse(Call<List<PlacementBlogPost>> call, Response<List<PlacementBlogPost>> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
...@@ -122,25 +118,26 @@ public class PlacementBlogFragment extends BaseFragment { ...@@ -122,25 +118,26 @@ public class PlacementBlogFragment extends BaseFragment {
placementFeedRecyclerView.setAdapter(placementBlogAdapter); placementFeedRecyclerView.setAdapter(placementBlogAdapter);
placementFeedRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); placementFeedRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
placementFeedRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { placementFeedRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
// multiple calls should not be made // multiple calls should not be made
boolean loading=false; boolean loading = false;
@Override @Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) { public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if(dy>0){ if (dy > 0) {
LinearLayoutManager layoutManager= (LinearLayoutManager) placementFeedRecyclerView.getLayoutManager(); LinearLayoutManager layoutManager = (LinearLayoutManager) placementFeedRecyclerView.getLayoutManager();
if(((layoutManager.getChildCount()+layoutManager.findFirstVisibleItemPosition())>(layoutManager.getItemCount()-5))&&(!loading)){ if (((layoutManager.getChildCount() + layoutManager.findFirstVisibleItemPosition()) > (layoutManager.getItemCount() - 5)) && (!loading)) {
loading=true; loading = true;
View v=getActivity().findViewById(R.id.placement_feed_swipe_refresh_layout); View v = getActivity().findViewById(R.id.placement_feed_swipe_refresh_layout);
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class); RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.getPlacementBlogFeed("sessionid=" +getArguments().getString(Constants.SESSION_ID),layoutManager.getItemCount(),10).enqueue(new Callback<List<PlacementBlogPost>>() { retrofitInterface.getPlacementBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID), layoutManager.getItemCount(), 10).enqueue(new Callback<List<PlacementBlogPost>>() {
@Override @Override
public void onResponse(Call<List<PlacementBlogPost>> call, Response<List<PlacementBlogPost>> response) { public void onResponse(Call<List<PlacementBlogPost>> call, Response<List<PlacementBlogPost>> response) {
loading=false; loading = false;
List<PlacementBlogPost> blogPosts= (ArrayList<PlacementBlogPost>) placementBlogAdapter.getPosts(); List<PlacementBlogPost> blogPosts = (ArrayList<PlacementBlogPost>) placementBlogAdapter.getPosts();
blogPosts.addAll(response.body()); blogPosts.addAll(response.body());
if(response.body().size()==0){ if (response.body().size() == 0) {
showLoader=false; showLoader = false;
} }
placementBlogAdapter.setPosts(blogPosts); placementBlogAdapter.setPosts(blogPosts);
placementBlogAdapter.notifyDataSetChanged(); placementBlogAdapter.notifyDataSetChanged();
...@@ -149,7 +146,7 @@ public class PlacementBlogFragment extends BaseFragment { ...@@ -149,7 +146,7 @@ public class PlacementBlogFragment extends BaseFragment {
@Override @Override
public void onFailure(Call<List<PlacementBlogPost>> call, Throwable t) { public void onFailure(Call<List<PlacementBlogPost>> call, Throwable t) {
loading=false; loading = false;
} }
}); });
} }
......
...@@ -15,6 +15,7 @@ import android.view.LayoutInflater; ...@@ -15,6 +15,7 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import app.insti.ActivityBuffer; import app.insti.ActivityBuffer;
...@@ -39,6 +40,7 @@ public class TrainingBlogFragment extends BaseFragment { ...@@ -39,6 +40,7 @@ public class TrainingBlogFragment extends BaseFragment {
private SwipeRefreshLayout feedSwipeRefreshLayout; private SwipeRefreshLayout feedSwipeRefreshLayout;
private AppDatabase appDatabase; private AppDatabase appDatabase;
private boolean freshBlogDisplayed = false; private boolean freshBlogDisplayed = false;
public static boolean showLoader = true;
public TrainingBlogFragment() { public TrainingBlogFragment() {
...@@ -76,7 +78,7 @@ public class TrainingBlogFragment extends BaseFragment { ...@@ -76,7 +78,7 @@ public class TrainingBlogFragment extends BaseFragment {
private void updateTrainingFeed() { private void updateTrainingFeed() {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class); RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.getTrainingBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID)).enqueue(new Callback<List<TrainingBlogPost>>() { retrofitInterface.getTrainingBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID), 0, 20).enqueue(new Callback<List<TrainingBlogPost>>() {
@Override @Override
public void onResponse(Call<List<TrainingBlogPost>> call, Response<List<TrainingBlogPost>> response) { public void onResponse(Call<List<TrainingBlogPost>> call, Response<List<TrainingBlogPost>> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
...@@ -115,6 +117,43 @@ public class TrainingBlogFragment extends BaseFragment { ...@@ -115,6 +117,43 @@ public class TrainingBlogFragment extends BaseFragment {
trainingFeedRecyclerView = getActivity().findViewById(R.id.training_feed_recycler_view); trainingFeedRecyclerView = getActivity().findViewById(R.id.training_feed_recycler_view);
trainingFeedRecyclerView.setAdapter(trainingBlogAdapter); trainingFeedRecyclerView.setAdapter(trainingBlogAdapter);
trainingFeedRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); trainingFeedRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
trainingFeedRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
// multiple calls should not be made
boolean loading = false;
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if (dy > 0) {
LinearLayoutManager layoutManager = (LinearLayoutManager) trainingFeedRecyclerView.getLayoutManager();
if (((layoutManager.getChildCount() + layoutManager.findFirstVisibleItemPosition()) > (layoutManager.getItemCount() - 5)) && (!loading)) {
loading = true;
View v = getActivity().findViewById(R.id.training_feed_swipe_refresh_layout);
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.getTrainingBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID), layoutManager.getItemCount(), 10).enqueue(new Callback<List<TrainingBlogPost>>() {
@Override
public void onResponse(Call<List<TrainingBlogPost>> call, Response<List<TrainingBlogPost>> response) {
loading = false;
List<TrainingBlogPost> blogPosts = (ArrayList<TrainingBlogPost>) trainingBlogAdapter.getPosts();
blogPosts.addAll(response.body());
if (response.body().size() == 0) {
showLoader = false;
}
trainingBlogAdapter.setPosts(blogPosts);
trainingBlogAdapter.notifyDataSetChanged();
// new updateDatabase().execute(blogPosts);
}
@Override
public void onFailure(Call<List<TrainingBlogPost>> call, Throwable t) {
loading = false;
}
});
}
}
}
});
} catch (NullPointerException e) { } catch (NullPointerException e) {
e.printStackTrace(); e.printStackTrace();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment