Advertisement
alfacentaury

CartFragment

Apr 11th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.13 KB | None | 0 0
  1. package com.centaury.catalogkue.ui.cart;
  2.  
  3. import android.arch.lifecycle.Observer;
  4. import android.arch.lifecycle.ViewModelProviders;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.os.Bundle;
  8. import android.support.annotation.NonNull;
  9. import android.support.annotation.Nullable;
  10. import android.support.v4.app.Fragment;
  11. import android.support.v4.app.FragmentActivity;
  12. import android.support.v7.app.AlertDialog;
  13. import android.support.v7.app.AppCompatActivity;
  14. import android.support.v7.widget.DefaultItemAnimator;
  15. import android.support.v7.widget.DividerItemDecoration;
  16. import android.support.v7.widget.LinearLayoutManager;
  17. import android.support.v7.widget.RecyclerView;
  18. import android.support.v7.widget.Toolbar;
  19. import android.view.LayoutInflater;
  20. import android.view.Menu;
  21. import android.view.MenuInflater;
  22. import android.view.MenuItem;
  23. import android.view.View;
  24. import android.view.ViewGroup;
  25. import android.widget.LinearLayout;
  26. import android.widget.TextView;
  27.  
  28. import com.centaury.catalogkue.R;
  29. import com.centaury.catalogkue.data.db.entity.CakeEntity;
  30. import com.centaury.catalogkue.ui.cart.adapter.CakeCartAdapter;
  31. import com.centaury.catalogkue.ui.detail.DetailCakeActivity;
  32. import com.centaury.catalogkue.utils.MyDividerItemDecoration;
  33.  
  34. import java.util.List;
  35. import java.util.concurrent.ExecutionException;
  36.  
  37. import butterknife.BindView;
  38. import butterknife.ButterKnife;
  39. import butterknife.Unbinder;
  40.  
  41. public class CartFragment extends Fragment implements CakeCartAdapter.CakesAdapterListener {
  42.  
  43.     public static final String TAG = CartFragment.class.getSimpleName();
  44.  
  45.     @BindView(R.id.txt_toolbar)
  46.     TextView mTxtToolbar;
  47.     @BindView(R.id.toolbar)
  48.     Toolbar mToolbar;
  49.     @BindView(R.id.shadow)
  50.     View mShadow;
  51.     @BindView(R.id.recyc_keranjang)
  52.     RecyclerView mRecycKeranjang;
  53.     @BindView(R.id.ln_empty_state)
  54.     LinearLayout mLnEmptyState;
  55.     @BindView(R.id.harga_total)
  56.     TextView mHargaTotal;
  57.     @BindView(R.id.ln_jumlah)
  58.     LinearLayout mLnJumlah;
  59.     private View view;
  60.     private Unbinder unbinder;
  61.  
  62.     private CartViewModel cartViewModel;
  63.     private CakeCartAdapter cakeCartAdapter;
  64.  
  65.     public CartFragment() {
  66.         // Required empty public constructor
  67.     }
  68.  
  69.     @Override
  70.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  71.                              Bundle savedInstanceState) {
  72.         View view = inflater.inflate(R.layout.fragment_cart, container, false);
  73.         unbinder = ButterKnife.bind(this, view);
  74.         ((AppCompatActivity) getActivity()).setSupportActionBar(mToolbar);
  75.         setHasOptionsMenu(true);
  76.  
  77.         return view;
  78.     }
  79.  
  80.     @Override
  81.     public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
  82.         super.onViewCreated(view, savedInstanceState);
  83.  
  84.         cartViewModel = ViewModelProviders.of((FragmentActivity) getContext()).get(CartViewModel.class);
  85.  
  86.         cakeCartAdapter = new CakeCartAdapter(getContext(), this);
  87.         RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext());
  88.         mRecycKeranjang.setLayoutManager(layoutManager);
  89.         mRecycKeranjang.setItemAnimator(new DefaultItemAnimator());
  90.         mRecycKeranjang.addItemDecoration(new MyDividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL, 16));
  91.         mRecycKeranjang.setAdapter(cakeCartAdapter);
  92.     }
  93.  
  94.     @Override
  95.     public void onActivityCreated(@Nullable Bundle savedInstanceState) {
  96.         super.onActivityCreated(savedInstanceState);
  97.  
  98.         cartViewModel.getCakes().observe(this, new Observer<List<CakeEntity>>() {
  99.             @Override
  100.             public void onChanged(@Nullable List<CakeEntity> cakeEntities) {
  101.                 cakeCartAdapter.submitList(cakeEntities);
  102.                 toggleEmptyCakes(cakeEntities.size());
  103.             }
  104.         });
  105.     }
  106.  
  107.     private void toggleEmptyCakes(int size) {
  108.         if (size > 0) {
  109.             mLnEmptyState.setVisibility(View.GONE);
  110.         } else {
  111.             mLnEmptyState.setVisibility(View.VISIBLE);
  112.         }
  113.     }
  114.  
  115.     private void deleteAllCakes() {
  116.         cartViewModel.deleteAllCakes();
  117.     }
  118.  
  119.     public void insertCake(CakeEntity cake) {
  120.         cartViewModel.insertCake(cake);
  121.     }
  122.  
  123.     private void showDeleteDialog() {
  124.         LayoutInflater layoutInflaterAndroid = LayoutInflater.from(getContext());
  125.         View view = layoutInflaterAndroid.inflate(R.layout.alert_dialog, null);
  126.  
  127.         AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
  128.         builder.setView(view);
  129.  
  130.         TextView dialogTitle = view.findViewById(R.id.dialog_title);
  131.         TextView dialogDesc = view.findViewById(R.id.dialog_desc);
  132.         dialogTitle.setText(getString(R.string.title_hapus));
  133.         dialogDesc.setText(getString(R.string.txt_hapus_dialog));
  134.  
  135.         builder.setCancelable(false)
  136.                 .setPositiveButton(getString(R.string.label_hapus), (dialog, which) -> {
  137.                     deleteAllCakes();
  138.                     dialog.dismiss();
  139.                 })
  140.                 .setNegativeButton(getString(R.string.label_cancel), (dialog, which) -> {
  141.                     dialog.dismiss();
  142.                 });
  143.         final AlertDialog alertDialog = builder.create();
  144.         alertDialog.show();
  145.     }
  146.  
  147.     private void showDeleteByIdDialog(int cakeId) {
  148.  
  149.         final CakeEntity cake;
  150.         try {
  151.             cake = cartViewModel.getCake(cakeId);
  152.  
  153.             LayoutInflater layoutInflaterAndroid = LayoutInflater.from(getContext());
  154.             View view = layoutInflaterAndroid.inflate(R.layout.alert_dialog, null);
  155.  
  156.             AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
  157.             builder.setView(view);
  158.  
  159.             TextView dialogTitle = view.findViewById(R.id.dialog_title);
  160.             TextView dialogDesc = view.findViewById(R.id.dialog_desc);
  161.             dialogTitle.setText(getString(R.string.title_hapus));
  162.             dialogDesc.setText(getString(R.string.txt_hapus_dialog));
  163.  
  164.             builder.setCancelable(false)
  165.                     .setPositiveButton(getString(R.string.label_hapus), (dialog, which) -> {
  166.                         cartViewModel.deleteCake(cake);
  167.                         dialog.dismiss();
  168.                     })
  169.                     .setNegativeButton(getString(R.string.label_cancel), (dialog, which) -> {
  170.                         dialog.dismiss();
  171.                     });
  172.             final AlertDialog alertDialog = builder.create();
  173.             alertDialog.show();
  174.         } catch (ExecutionException e) {
  175.             // TODO - handle error
  176.             e.printStackTrace();
  177.         } catch (InterruptedException e) {
  178.             // TODO - handle error
  179.             e.printStackTrace();
  180.         }
  181.     }
  182.  
  183.     @Override
  184.     public void onAttach(Context context) {
  185.         super.onAttach(context);
  186.  
  187.     }
  188.  
  189.     @Override
  190.     public void onDetach() {
  191.         super.onDetach();
  192.  
  193.     }
  194.  
  195.     @Override
  196.     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
  197.         inflater.inflate(R.menu.menu_more, menu);
  198.  
  199.         super.onCreateOptionsMenu(menu, inflater);
  200.     }
  201.  
  202.     @Override
  203.     public boolean onOptionsItemSelected(MenuItem item) {
  204.         switch (item.getItemId()) {
  205.             case R.id.clear:
  206.                 showDeleteDialog();
  207.                 return true;
  208.             default:
  209.                 return super.onOptionsItemSelected(item);
  210.         }
  211.     }
  212.  
  213.     @Override
  214.     public void onDestroyView() {
  215.         super.onDestroyView();
  216.         unbinder.unbind();
  217.     }
  218.  
  219.     @Override
  220.     public void onDestroy() {
  221.         super.onDestroy();
  222.         unbinder.unbind();
  223.     }
  224.  
  225.     @Override
  226.     public void onClick(String cakeId, int position) {
  227.         Intent intent = new Intent(getContext(), DetailCakeActivity.class);
  228.         intent.putExtra(DetailCakeActivity.KEY_CAKE_ID, cakeId);
  229.         startActivity(intent);
  230.         getActivity().overridePendingTransition(R.anim.slide_in_from_right, R.anim.slide_out_to_left);
  231.     }
  232.  
  233.     @Override
  234.     public void onDeleteClick(int cakeId, int position) {
  235.         showDeleteByIdDialog(cakeId);
  236.     }
  237. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement