Commit d5acbcfa authored by maitreya's avatar maitreya

added infinite scrolling in placement blog

parent 98708575
...@@ -20,6 +20,13 @@ import app.insti.data.PlacementBlogPost; ...@@ -20,6 +20,13 @@ import app.insti.data.PlacementBlogPost;
import ru.noties.markwon.Markwon; import ru.noties.markwon.Markwon;
public class PlacementBlogAdapter extends RecyclerView.Adapter<PlacementBlogAdapter.ViewHolder> { public class PlacementBlogAdapter extends RecyclerView.Adapter<PlacementBlogAdapter.ViewHolder> {
public List<PlacementBlogPost> getPosts() {
return posts;
}
public void setPosts(List<PlacementBlogPost> posts) {
this.posts = posts;
}
private List<PlacementBlogPost> posts; private List<PlacementBlogPost> posts;
private Context context; private Context context;
......
...@@ -57,7 +57,7 @@ public interface RetrofitInterface { ...@@ -57,7 +57,7 @@ public interface RetrofitInterface {
Call<Void> updateUserEventStatus(@Header("Cookie") String sessionID, @Path("eventID") String eventID, @Query("status") int status); Call<Void> updateUserEventStatus(@Header("Cookie") String sessionID, @Path("eventID") String eventID, @Query("status") int status);
@GET("placement-blog") @GET("placement-blog")
Call<List<PlacementBlogPost>> getPlacementBlogFeed(@Header("Cookie") String sessionID); 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);
......
...@@ -2,6 +2,7 @@ package app.insti.fragment; ...@@ -2,6 +2,7 @@ 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;
...@@ -11,10 +12,14 @@ import android.support.v4.widget.SwipeRefreshLayout; ...@@ -11,10 +12,14 @@ 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.List; import java.util.List;
import app.insti.ActivityBuffer; import app.insti.ActivityBuffer;
...@@ -76,7 +81,7 @@ public class PlacementBlogFragment extends BaseFragment { ...@@ -76,7 +81,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)).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()) {
...@@ -115,6 +120,36 @@ public class PlacementBlogFragment extends BaseFragment { ...@@ -115,6 +120,36 @@ public class PlacementBlogFragment extends BaseFragment {
placementFeedRecyclerView = getActivity().findViewById(R.id.placement_feed_recycler_view); placementFeedRecyclerView = getActivity().findViewById(R.id.placement_feed_recycler_view);
placementFeedRecyclerView.setAdapter(placementBlogAdapter); placementFeedRecyclerView.setAdapter(placementBlogAdapter);
placementFeedRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); placementFeedRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
placementFeedRecyclerView.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) placementFeedRecyclerView.getLayoutManager();
if(((layoutManager.getChildCount()+layoutManager.findFirstVisibleItemPosition())>(layoutManager.getItemCount()-5))&&(!loading)){
loading=true;
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.getPlacementBlogFeed("sessionid=" +getArguments().getString(Constants.SESSION_ID),layoutManager.getItemCount(),10).enqueue(new Callback<List<PlacementBlogPost>>() {
@Override
public void onResponse(Call<List<PlacementBlogPost>> call, Response<List<PlacementBlogPost>> response) {
loading=false;
List<PlacementBlogPost> blogPosts= (ArrayList<PlacementBlogPost>) placementBlogAdapter.getPosts();
blogPosts.addAll(response.body());
placementBlogAdapter.setPosts(blogPosts);
placementBlogAdapter.notifyDataSetChanged();
}
@Override
public void onFailure(Call<List<PlacementBlogPost>> 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