Advertisement
gust94

ForumFragment

Jan 19th, 2017
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.36 KB | None | 0 0
  1. package com.dss.invitup.vc.occasionPage.forum;
  2. import android.content.Intent;
  3. import android.os.Bundle;
  4. import android.support.v4.app.Fragment;
  5. import android.support.v7.widget.LinearLayoutManager;
  6. import android.support.v7.widget.RecyclerView;
  7. import android.view.LayoutInflater;
  8. import android.view.View;
  9. import android.view.ViewGroup;
  10. import android.widget.FrameLayout;
  11. import android.widget.ImageView;
  12. import com.dss.invitup.MainActivity;
  13. import com.dss.invitup.R;
  14. import com.dss.invitup.adapters.ForumAdapter;
  15. import com.dss.invitup.events.GetDiscussionRoomEntriesFinishedEvent;
  16. import com.dss.invitup.events.MainActivityHideLoadingEvent;
  17. import com.dss.invitup.events.MainActivityShowLoadingEvent;
  18. import com.dss.invitup.models.serverResponses.OccasionDiscussionRoomEntriesResponse;
  19. import com.dss.invitup.singleton.AppController;
  20. import com.dss.invitup.singleton.InterfaceManager;
  21. import com.dss.invitup.singleton.ServerManager;
  22. import com.dss.invitup.singleton.SettingsManager;
  23. import com.dss.invitup.view.RobotoRegularTextView;
  24. import de.greenrobot.event.EventBus;
  25. import in.srain.cube.views.ptr.PtrClassicFrameLayout;
  26. import in.srain.cube.views.ptr.PtrFrameLayout;
  27. import in.srain.cube.views.ptr.PtrUIHandler;
  28. import in.srain.cube.views.ptr.indicator.PtrIndicator;
  29. import io.realm.Realm;
  30. /**
  31. * Copyright © 2016 Dihardja Software Solutions. All rights reserved.
  32. */
  33. public class ForumFragment extends Fragment{
  34. PtrClassicFrameLayout ptrClassicFrameLayout;
  35. RecyclerView recyclerView;
  36. ImageView addNewForumButtonImageView;
  37. ForumAdapter forumAdapter;
  38. OccasionDiscussionRoomEntriesResponse occasionDiscussionRoomEntriesResponse;
  39. LinearLayoutManager linearLayoutManager;
  40. FrameLayout rootFrameLayout;
  41. String currentOccasionId = "";
  42. Realm realm;
  43. RobotoRegularTextView emptyTextView;
  44. boolean isHasLocalData = false;
  45. MainActivity mainActivity;
  46. @Override
  47. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  48. Bundle savedInstanceState) {
  49. View view = inflater.inflate(R.layout.fragment_forum, container, false);
  50. if(!EventBus.getDefault().isRegistered(this)){
  51. EventBus.getDefault().register(this);
  52. }
  53. ptrClassicFrameLayout = (PtrClassicFrameLayout) view.findViewById(R.id.fragment_forum_ptrClassicFrameLayout);
  54. addNewForumButtonImageView = (ImageView) view.findViewById(R.id.fragment_forum_addNewForumButton);
  55. recyclerView = (RecyclerView) view.findViewById(R.id.fragment_forum_recyclerView);
  56. rootFrameLayout = (FrameLayout)view.findViewById(R.id.fragment_forum_rootFrameLayout);
  57. emptyTextView = (RobotoRegularTextView) view.findViewById(R.id.fragment_forum_emptyTextView);
  58. realm = AppController.getInstance().getRealm();
  59. forumAdapter = new ForumAdapter(getActivity());
  60. linearLayoutManager = new LinearLayoutManager(getActivity());
  61. mainActivity = (MainActivity) getActivity();
  62. return view;
  63. }
  64. @Override
  65. public void onViewCreated(View view, Bundle savedInstanceState) {
  66. super.onViewCreated(view, savedInstanceState);
  67. mainActivity.position = 3;
  68. recyclerView.setAdapter(forumAdapter);
  69. recyclerView.setHasFixedSize(true);
  70. linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
  71. recyclerView.setLayoutManager(linearLayoutManager);
  72. if(SettingsManager.getInstance().getCurrentUserRole()== SettingsManager.UserRole.INVITED){
  73. addNewForumButtonImageView.setVisibility(View.GONE);
  74. }else{
  75. addNewForumButtonImageView.setVisibility(View.VISIBLE);
  76. }
  77. recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
  78. @Override
  79. public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
  80. super.onScrollStateChanged(recyclerView, newState);
  81. }
  82. @Override
  83. public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
  84. super.onScrolled(recyclerView, dx, dy);
  85. ptrClassicFrameLayout.setEnabled(false);
  86. if(linearLayoutManager.findFirstVisibleItemPosition()==0) {
  87. View v = linearLayoutManager.getChildAt(linearLayoutManager.findFirstVisibleItemPosition());
  88. int offsetTop = v.getTop();
  89. if (offsetTop == 0) {
  90. ptrClassicFrameLayout.setEnabled(true);
  91. }
  92. }
  93. }
  94. });
  95. ptrClassicFrameLayout.addPtrUIHandler(new PtrUIHandler() {
  96. @Override
  97. public void onUIReset(PtrFrameLayout frame) {
  98. }
  99. @Override
  100. public void onUIRefreshPrepare(PtrFrameLayout frame) {
  101. }
  102. @Override
  103. public void onUIRefreshBegin(PtrFrameLayout frame) {
  104. forumAdapter.clearAdapter();
  105. EventBus.getDefault().post(new MainActivityShowLoadingEvent());
  106. ServerManager.getInstance().getAllOccasionDiscussionRoom(currentOccasionId);
  107. }
  108. @Override
  109. public void onUIRefreshComplete(PtrFrameLayout frame) {
  110. }
  111. @Override
  112. public void onUIPositionChange(PtrFrameLayout frame, boolean isUnderTouch, byte status, PtrIndicator ptrIndicator) {
  113. }
  114. });
  115. addNewForumButtonImageView.setOnClickListener(addNewForumListener);
  116. }
  117. @Override
  118. public void onResume() {
  119. super.onResume();
  120. if(mainActivity.isFromPushNotif){
  121. currentOccasionId = mainActivity.currentOccasionId;
  122. }else{
  123. if(SettingsManager.getInstance().getCurrentOccasion()!=null){
  124. currentOccasionId = SettingsManager.getInstance().getCurrentOccasion().getId();
  125. }
  126. }
  127. reloadLocalData();
  128. }
  129. @Override
  130. public void onDestroy(){
  131. super.onDestroy();
  132. if(EventBus.getDefault().isRegistered(this)) {
  133. EventBus.getDefault().unregister(this);
  134. }
  135. }
  136. ImageView.OnClickListener addNewForumListener = new View.OnClickListener() {
  137. @Override
  138. public void onClick(View v) {
  139. Intent i = new Intent(getActivity(),AddNewForumActivity.class);
  140. getActivity().startActivity(i);
  141. }
  142. };
  143. public void reloadLocalData(){
  144. occasionDiscussionRoomEntriesResponse = realm.where(OccasionDiscussionRoomEntriesResponse.class)
  145. .equalTo("id",currentOccasionId).findFirst();
  146. if(occasionDiscussionRoomEntriesResponse!=null){
  147. if(occasionDiscussionRoomEntriesResponse.getOccasionDiscussionRoomEntry().size()!=0){
  148. isHasLocalData = true;
  149. emptyTextView.setVisibility(View.GONE);
  150. forumAdapter.updateAdapter(occasionDiscussionRoomEntriesResponse.getOccasionDiscussionRoomEntry());
  151. }else{
  152. isHasLocalData = false;
  153. emptyTextView.setVisibility(View.VISIBLE);
  154. }
  155. }else{
  156. isHasLocalData = false;
  157. emptyTextView.setVisibility(View.VISIBLE);
  158. }
  159. EventBus.getDefault().post(new MainActivityShowLoadingEvent());
  160. ServerManager.getInstance().getAllOccasionDiscussionRoom(currentOccasionId);
  161. }
  162. public void onEvent(GetDiscussionRoomEntriesFinishedEvent event) {
  163. EventBus.getDefault().post(new MainActivityHideLoadingEvent());
  164. ptrClassicFrameLayout.refreshComplete();
  165. if(event.occasionDiscussionRoomEntriesResponse!=null){
  166. occasionDiscussionRoomEntriesResponse = event.occasionDiscussionRoomEntriesResponse;
  167. if (occasionDiscussionRoomEntriesResponse.getOccasionDiscussionRoomEntry().size()!=0){
  168. emptyTextView.setVisibility(View.GONE);
  169. forumAdapter.updateAdapter(occasionDiscussionRoomEntriesResponse.getOccasionDiscussionRoomEntry());
  170. }else{
  171. if(!isHasLocalData){
  172. emptyTextView.setVisibility(View.VISIBLE);
  173. }
  174. }
  175. }else{
  176. if(!isHasLocalData){
  177. emptyTextView.setVisibility(View.VISIBLE);
  178. }
  179. InterfaceManager.sharedInstance().showErrorMessage(getActivity(), event.errorMessage);
  180. }
  181. }
  182. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement