Advertisement
Roctik

Untitled

Aug 5th, 2019
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.77 KB | None | 0 0
  1. package com.polexexpress.polexonlinestorage.ui;
  2.  
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.content.SharedPreferences;
  6. import android.os.Bundle;
  7. import android.view.MenuItem;
  8. import android.view.View;
  9. import android.widget.FrameLayout;
  10. import android.widget.ProgressBar;
  11.  
  12. import androidx.annotation.NonNull;
  13. import androidx.appcompat.app.ActionBarDrawerToggle;
  14. import androidx.appcompat.widget.Toolbar;
  15. import androidx.core.view.GravityCompat;
  16. import androidx.drawerlayout.widget.DrawerLayout;
  17. import androidx.recyclerview.widget.LinearLayoutManager;
  18. import androidx.recyclerview.widget.RecyclerView;
  19.  
  20. import com.arellomobile.mvp.MvpAppCompatActivity;
  21. import com.arellomobile.mvp.presenter.InjectPresenter;
  22. import com.google.android.material.navigation.NavigationView;
  23. import com.polexexpress.polexonlinestorage.R;
  24. import com.polexexpress.polexonlinestorage.ui.adapter.InvoiceAdapter;
  25. import com.polexexpress.polexonlinestorage.model.DetailGroupInvoice;
  26. import com.polexexpress.polexonlinestorage.model.Filter;
  27. import com.polexexpress.polexonlinestorage.model.Group;
  28. import com.polexexpress.polexonlinestorage.model.Login;
  29. import com.polexexpress.polexonlinestorage.model.PagingInfo;
  30. import com.polexexpress.polexonlinestorage.model.SearchInvoice;
  31. import com.polexexpress.polexonlinestorage.model.SortInfo;
  32. import com.polexexpress.polexonlinestorage.other.Const;
  33. import com.polexexpress.polexonlinestorage.presenter.InvoicePresenter;
  34. import com.polexexpress.polexonlinestorage.view.InvoiceView;
  35.  
  36. import java.util.ArrayList;
  37. import java.util.Objects;
  38.  
  39. public class InvoiceActivity extends MvpAppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, InvoiceView {
  40.  
  41. private RecyclerView recyclerView;
  42. private ArrayList<SearchInvoice> data;
  43. private static final String APP_PREFERENCES = "setting";
  44. private static final String APP_PREFERENCES_USERNAME = "username";
  45. private static final String APP_PREFERENCES_PASS = "pass";
  46. private SharedPreferences mSettings;
  47. boolean isLoading = false;
  48. InvoiceAdapter adapter;
  49. int i=0,size;
  50. String token;
  51.  
  52. @InjectPresenter
  53. InvoicePresenter invoicePresenter;
  54.  
  55. @Override
  56. protected void onCreate(Bundle savedInstanceState) {
  57. super.onCreate(savedInstanceState);
  58. data = new ArrayList<>();
  59. setContentView(R.layout.activity_invoice);
  60. Toolbar toolbar = findViewById(R.id.toolbar);
  61. recyclerView = findViewById(R.id.recycler_invoice);
  62.  
  63. mSettings = getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE);
  64.  
  65. setSupportActionBar(toolbar);
  66. Objects.requireNonNull(getSupportActionBar()).setDisplayShowTitleEnabled(false);
  67. DrawerLayout drawer = findViewById(R.id.drawer_layout);
  68. NavigationView navigationView = findViewById(R.id.nav_view);
  69. ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
  70. this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
  71. drawer.addDrawerListener(toggle);
  72. toggle.syncState();
  73. navigationView.setNavigationItemSelectedListener(this);
  74.  
  75. invoicePresenter.refreshToken(Const.grant_type_refresh,Const.refresh_token);
  76. token = Const.token_type + " " + Const.token;
  77.  
  78. Group group = new Group();
  79. group.setFilter(new Filter());
  80.  
  81. PagingInfo pagingInfo = new PagingInfo();
  82. pagingInfo.setPageNum(i);
  83. pagingInfo.setPageSize(10);
  84. group.setPagingInfo(pagingInfo);
  85.  
  86. ArrayList<SortInfo> sortInfos = new ArrayList<>();
  87. SortInfo sortInfo = new SortInfo();
  88. sortInfo.setFieldName("id");
  89. sortInfo.setSortDirection("desc");
  90. sortInfos.add(sortInfo);
  91. group.setSortInfos(sortInfos);
  92.  
  93. invoicePresenter.getInvoice(token,group);
  94.  
  95. LinearLayoutManager layoutManager = new LinearLayoutManager(this);
  96. recyclerView.setLayoutManager(layoutManager);
  97. recyclerView.setHasFixedSize(true);
  98. recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
  99. @Override
  100. public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
  101. super.onScrollStateChanged(recyclerView, newState);
  102. }
  103.  
  104. @Override
  105. public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
  106. super.onScrolled(recyclerView, dx, dy);
  107.  
  108. LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
  109.  
  110. if (!isLoading) {
  111. if (linearLayoutManager != null && linearLayoutManager.findLastCompletelyVisibleItemPosition() == data.size() - 1) {
  112. //bottom of list!
  113. loadMore();
  114. isLoading = true;
  115. }
  116. }
  117. }
  118. });
  119. }
  120. private void loadMore() {
  121. data.add(null);
  122. adapter.notifyItemInserted(data.size() - 1);
  123.  
  124. i++;
  125. Group group = new Group();
  126. group.setFilter(new Filter());
  127.  
  128. PagingInfo pagingInfo = new PagingInfo();
  129. pagingInfo.setPageNum(i);
  130. pagingInfo.setPageSize(10);
  131. group.setPagingInfo(pagingInfo);
  132.  
  133. ArrayList<SortInfo> sortInfos = new ArrayList<>();
  134. SortInfo sortInfo = new SortInfo();
  135. sortInfo.setFieldName("id");
  136. sortInfo.setSortDirection("desc");
  137. sortInfos.add(sortInfo);
  138. group.setSortInfos(sortInfos);
  139.  
  140. invoicePresenter.getInvoice(token,group);
  141. data.remove(data.size() - 1);
  142. int scrollPosition = data.size();
  143. adapter.notifyItemRemoved(scrollPosition);
  144. int currentSize = scrollPosition;
  145. int nextLimit = currentSize + 10;
  146.  
  147. while (currentSize - 1 < nextLimit) {
  148. currentSize++;
  149. }
  150.  
  151. adapter.notifyDataSetChanged();
  152. isLoading = false;
  153.  
  154. }
  155. @Override
  156. public boolean onNavigationItemSelected(@NonNull MenuItem item) {
  157. int id = item.getItemId();
  158.  
  159. if (id == R.id.nav_add) {
  160.  
  161. } else if (id == R.id.nav_check) {
  162. Intent check = new Intent(this, CheckActivity.class);
  163. startActivity(check);
  164. finish();
  165. } else if (id == R.id.nav_delivery) {
  166. Intent delivery = new Intent(this, DeliveryActivity.class);
  167. startActivity(delivery);
  168. finish();
  169. } else if (id == R.id.nav_all) {
  170. Intent all = new Intent(this, InvoiceActivity.class);
  171. startActivity(all);
  172. finish();
  173. } else if (id == R.id.nav_exit) {
  174. Intent exit = new Intent(this, LoginActivity.class);
  175. SharedPreferences.Editor editor = mSettings.edit();
  176. editor.putString(APP_PREFERENCES_USERNAME, "");
  177. editor.putString(APP_PREFERENCES_PASS, "");
  178. editor.apply();
  179. Const.token = "";
  180. startActivity(exit);
  181. finish();
  182. }
  183.  
  184. DrawerLayout drawer = findViewById(R.id.drawer_layout);
  185. drawer.closeDrawer(GravityCompat.START);
  186. return true;
  187. }
  188.  
  189. @Override
  190. public void getInvoice(DetailGroupInvoice groupResult) {
  191. data.addAll(groupResult.getContentDetailGroupInvoice().getData());
  192. adapter = new InvoiceAdapter(data);
  193. adapter.setOnItemClickListener(onItemClickListener);
  194. recyclerView.setAdapter(adapter);
  195. }
  196. private View.OnClickListener onItemClickListener = new View.OnClickListener() {
  197. @Override
  198. public void onClick(View view) {
  199. RecyclerView.ViewHolder viewHolder = (RecyclerView.ViewHolder) view.getTag();
  200. int position = viewHolder.getAdapterPosition();
  201. Intent detail = new Intent(getApplicationContext(),InvoiceDetailActivity.class);
  202. detail.putExtra("track_no",data.get(position).getTrackNo());
  203. startActivity(detail);
  204. }
  205. };
  206.  
  207. @Override
  208. public void showError(String error) {
  209.  
  210. }
  211.  
  212. @Override
  213. public void refreshToken(Login login) {
  214. Const.refresh_token = login.getRefreshToken();
  215. Const.token_type = login.getTokenType();
  216. Const.token = login.getAccessToken();
  217. }
  218.  
  219. @Override
  220. public void showProgress(boolean isLoading) {
  221. FrameLayout frameLayout = findViewById(R.id.frame);
  222. ProgressBar progressBar = findViewById(R.id.loader);
  223. if (isLoading) {
  224. frameLayout.setVisibility(View.VISIBLE);
  225. progressBar.setVisibility(View.VISIBLE);
  226. } else {
  227. frameLayout.setVisibility(View.INVISIBLE);
  228. progressBar.setVisibility(View.INVISIBLE);
  229. }
  230. }
  231. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement