HomeFragment.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. package club.thepenguins.android.fragments;
  2. import android.content.Context;
  3. import android.os.Bundle;
  4. import androidx.fragment.app.Fragment;
  5. import androidx.recyclerview.widget.LinearLayoutManager;
  6. import androidx.recyclerview.widget.RecyclerView;
  7. import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
  8. import android.view.LayoutInflater;
  9. import android.view.View;
  10. import android.view.ViewGroup;
  11. import android.widget.Toast;
  12. import com.facebook.shimmer.ShimmerFrameLayout;
  13. import org.jsoup.parser.Parser;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. import club.thepenguins.android.R;
  17. import club.thepenguins.android.adapters.PostRecyclerAdapter;
  18. import club.thepenguins.android.api.APIService;
  19. import club.thepenguins.android.data.Model;
  20. import club.thepenguins.android.data.Posts;
  21. import club.thepenguins.android.utils.Constants;
  22. import es.dmoral.toasty.Toasty;
  23. import retrofit2.Call;
  24. import retrofit2.Callback;
  25. import retrofit2.Response;
  26. import retrofit2.Retrofit;
  27. import retrofit2.converter.gson.GsonConverterFactory;
  28. import static club.thepenguins.android.utils.Constants.noInternet;
  29. public class HomeFragment extends Fragment {
  30. private static final String ARG_PARAM1 = "param1";
  31. private static final String ARG_PARAM2 = "param2";
  32. private String mParam1;
  33. private String mParam2;
  34. private RecyclerView recyclerView;
  35. private LinearLayoutManager LayoutManager;
  36. private ArrayList<Model> list;
  37. private PostRecyclerAdapter adapter;
  38. public List<Posts> mListPost;
  39. private SwipeRefreshLayout swipeContainer;
  40. private ShimmerFrameLayout loader;
  41. public static HomeFragment newInstance(String param1, String param2) {
  42. HomeFragment fragment = new HomeFragment();
  43. Bundle args = new Bundle();
  44. args.putString(ARG_PARAM1, param1);
  45. args.putString(ARG_PARAM2, param2);
  46. fragment.setArguments(args);
  47. return fragment;
  48. }
  49. public HomeFragment() {
  50. // Required empty public constructor
  51. }
  52. @Override
  53. public void onCreate(Bundle savedInstanceState) {
  54. super.onCreate(savedInstanceState);
  55. if (getArguments() != null) {
  56. mParam1 = getArguments().getString(ARG_PARAM1);
  57. mParam2 = getArguments().getString(ARG_PARAM2);
  58. }
  59. }
  60. @Override
  61. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  62. Bundle savedInstanceState) {
  63. View rootView = inflater.inflate(R.layout.fragment_home, container, false);
  64. recyclerView = rootView.findViewById(R.id.recycler_view);
  65. LayoutManager = new LinearLayoutManager(rootView.getContext(), LinearLayoutManager.VERTICAL, false);
  66. recyclerView.setLayoutManager(LayoutManager);
  67. loader = rootView.findViewById(R.id.shimmer_view_container);
  68. swipeContainer = rootView.findViewById(R.id.swiperefresh);
  69. list = new ArrayList<>();
  70. getRetrofit("100", rootView.getContext());
  71. adapter = new PostRecyclerAdapter(list, rootView.getContext());
  72. adapter.setStateRestorationPolicy(RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY);
  73. recyclerView.setAdapter(adapter);
  74. swipeContainer.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
  75. @Override
  76. public void onRefresh() {
  77. adapter.clear();
  78. getRetrofit("100", rootView.getContext());
  79. }
  80. });
  81. swipeContainer.setColorSchemeResources(android.R.color.holo_blue_bright,
  82. android.R.color.holo_green_light,
  83. android.R.color.holo_orange_light,
  84. android.R.color.holo_red_light);
  85. return rootView;
  86. }
  87. @Override
  88. public void onResume() {
  89. //loader.startShimmer();
  90. super.onResume();
  91. }
  92. @Override
  93. public void onPause() {
  94. //loader.stopShimmer();
  95. super.onPause();
  96. }
  97. private void getRetrofit(String perPage, Context context) {
  98. swipeContainer.setRefreshing(true);
  99. loader.setVisibility(View.VISIBLE);
  100. loader.startShimmer();
  101. Retrofit retrofit = new Retrofit.Builder()
  102. .baseUrl(Constants.BaseUrl)
  103. .addConverterFactory(GsonConverterFactory.create())
  104. .build();
  105. APIService service = retrofit.create(APIService.class);
  106. Call<List<Posts>> call = service.getPostsPerPage(perPage);
  107. call.enqueue(new Callback<List<Posts>>() {
  108. @Override
  109. public void onResponse(Call<List<Posts>> call, Response<List<Posts>> response) {
  110. mListPost = response.body();
  111. for (int i = 0; i < response.body().size(); i++) {
  112. list.add(new Model(Parser.unescapeEntities(response.body().get(i).getTitle().getRendered(), false), response.body().get(i).getContent().getRendered(), response.body().get(i).getEmbedded().getWpFeaturedmedia().get(0).getSourceUrl(), response.body().get(i).getLinks().getSelf().get(0).getHref(), response.body().get(i).getEmbedded().getAuthor().get(0).getName(), response.body().get(i).getLink()));
  113. }
  114. adapter.notifyDataSetChanged();
  115. swipeContainer.setRefreshing(false);
  116. loader.setVisibility(View.GONE);
  117. recyclerView.setVisibility(View.VISIBLE);
  118. }
  119. @Override
  120. public void onFailure(Call<List<Posts>> call, Throwable t) {
  121. Toasty.error(context, noInternet, Toast.LENGTH_LONG, true).show();
  122. }
  123. });
  124. }
  125. }