Commit 50e22008 authored by Maitreya Verma's avatar Maitreya Verma

added loader in bottom and stop loader on last post

parent d5acbcfa
...@@ -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.PlacementBlogPost; import app.insti.data.PlacementBlogPost;
import app.insti.fragment.PlacementBlogFragment;
import ru.noties.markwon.Markwon; import ru.noties.markwon.Markwon;
public class PlacementBlogAdapter extends RecyclerView.Adapter<PlacementBlogAdapter.ViewHolder> { public class PlacementBlogAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final int VIEW_ITEM = 1;
private final int VIEW_PROG = 0;
public List<PlacementBlogPost> getPosts() { public List<PlacementBlogPost> getPosts() {
return posts; return posts;
} }
...@@ -38,45 +43,65 @@ public class PlacementBlogAdapter extends RecyclerView.Adapter<PlacementBlogAdap ...@@ -38,45 +43,65 @@ public class PlacementBlogAdapter extends RecyclerView.Adapter<PlacementBlogAdap
} }
@Override @Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
context = parent.getContext(); if(viewType==VIEW_ITEM){
LayoutInflater inflater = LayoutInflater.from(context); context = parent.getContext();
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 PlacementBlogAdapter.ViewHolder postViewHolder = new PlacementBlogAdapter.ViewHolder(postView);
postView.setOnClickListener(new View.OnClickListener() { final PlacementBlogAdapter.ViewHolder postViewHolder = new PlacementBlogAdapter.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 PlacementBlogAdapter.ViewHolder postViewHolder = new PlacementBlogAdapter.ViewHolder(loadView);
return new PlacementBlogAdapter.ProgressViewHolder(loadView);
}
} }
@Override @Override
public void onBindViewHolder(ViewHolder holder, int position) { public int getItemViewType(int position) {
PlacementBlogPost post = posts.get(position); Log.d("position", String.valueOf(position));
Markwon.setMarkdown(holder.postTitle, post.getTitle()); return posts.size()> position ? VIEW_ITEM : VIEW_PROG;
Date publishedDate = post.getPublished();
Calendar calendar = Calendar.getInstance();
calendar.setTime(publishedDate);
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());
} }
@Override @Override
public int getItemCount() { public int getItemCount() {
return posts.size(); return PlacementBlogFragment.showLoader? (posts.size()+1):posts.size();
} }
@Override
public void onBindViewHolder(RecyclerView.ViewHolder recycleholder, int position) {
if(recycleholder instanceof ViewHolder){
ViewHolder holder=(ViewHolder)recycleholder;
PlacementBlogPost post = posts.get(position);
Markwon.setMarkdown(holder.postTitle, post.getTitle());
Date publishedDate = post.getPublished();
Calendar calendar = Calendar.getInstance();
calendar.setTime(publishedDate);
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{
((ProgressViewHolder)recycleholder).progressBar.setIndeterminate(true);
}
}
public class ViewHolder extends RecyclerView.ViewHolder { public class ViewHolder extends RecyclerView.ViewHolder {
private TextView postTitle; private TextView postTitle;
private TextView postPublished; private TextView postPublished;
...@@ -90,4 +115,12 @@ public class PlacementBlogAdapter extends RecyclerView.Adapter<PlacementBlogAdap ...@@ -90,4 +115,12 @@ public class PlacementBlogAdapter extends RecyclerView.Adapter<PlacementBlogAdap
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);
}
}
} }
...@@ -44,6 +44,7 @@ public class PlacementBlogFragment extends BaseFragment { ...@@ -44,6 +44,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 PlacementBlogFragment() { public PlacementBlogFragment() {
...@@ -129,15 +130,21 @@ public class PlacementBlogFragment extends BaseFragment { ...@@ -129,15 +130,21 @@ public class PlacementBlogFragment extends BaseFragment {
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);
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){
showLoader=false;
}
placementBlogAdapter.setPosts(blogPosts); placementBlogAdapter.setPosts(blogPosts);
placementBlogAdapter.notifyDataSetChanged(); placementBlogAdapter.notifyDataSetChanged();
// new updateDatabase().execute(blogPosts);
} }
@Override @Override
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
android:id="@+id/blog_load_item"
android:layout_gravity="center_horizontal"
android:layout_margin="@dimen/activity_vertical_margin"/>
</LinearLayout>
\ No newline at end of file
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