Advertisement
Grejt_cz

UkolListFragment.java

May 13th, 2018
339
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.57 KB | None | 0 0
  1. package cz.grejtCZ.ukolnicek.android.headeredList;
  2.  
  3. import android.arch.lifecycle.LifecycleOwner;
  4. import android.arch.lifecycle.LiveData;
  5. import android.arch.lifecycle.Observer;
  6. import android.arch.lifecycle.ViewModel;
  7. import android.arch.lifecycle.ViewModelProviders;
  8. import android.arch.paging.LivePagedListBuilder;
  9. import android.arch.paging.PagedList;
  10. import android.os.Bundle;
  11. import android.support.annotation.Nullable;
  12. import android.support.design.widget.FloatingActionButton;
  13. import android.support.v4.app.Fragment;
  14. import android.support.v7.widget.LinearLayoutManager;
  15. import android.support.v7.widget.RecyclerView;
  16. import android.view.LayoutInflater;
  17. import android.view.View;
  18. import android.view.ViewGroup;
  19.  
  20. import cz.grejtCZ.ukolnicek.android.R;
  21. import cz.grejtCZ.ukolnicek.android.activity.MainActivity;
  22. import cz.grejtCZ.ukolnicek.android.sql.DMO;
  23. import cz.grejtCZ.ukolnicek.android.sql.MojeDAO;
  24.  
  25. /**
  26.  */
  27. public class UkolListFragment extends Fragment {
  28.     private static final String SIS_LIST_ID = "listID";
  29.     private byte pripravenost = 0; //readyness; indikuje jak moc je fragment pripraven 0 - vůbec; 1 - vytvořeny View; 2 - data připravena; 3 - View naplněny
  30.  
  31.     private long listID;
  32.  
  33.     RecyclerView recyclerView;
  34.     FloatingActionButton addButton;
  35.  
  36.     UkolListAdapter adapter;
  37.     UkolViewModel model;
  38.  
  39.     private MainActivity.ClickCallback clickCallBack;
  40.  
  41.     public UkolListFragment() {
  42.         // Required empty public constructor
  43.     }
  44.  
  45.     @Override
  46.     public void onCreate(Bundle savedInstanceState) {
  47.         super.onCreate(savedInstanceState);
  48.         if (savedInstanceState != null && savedInstanceState.containsKey(SIS_LIST_ID)) {
  49.             listID = savedInstanceState.getLong(SIS_LIST_ID);
  50.             if (pripravenost == 1) {
  51.                 pripravenost = 3;
  52.                 postInit();
  53.             } else {
  54.                 pripravenost = 2;
  55.             }
  56.         }
  57.     }
  58.  
  59.     @Override
  60.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  61.                              Bundle savedInstanceState) {
  62.         View view = inflater.inflate(R.layout.fragment_ukol_list, container, false);
  63.  
  64.         recyclerView = view.findViewById(R.id.recyclerView);
  65.         addButton = view.findViewById(R.id.addButton);
  66.  
  67.         if (pripravenost == 2) {
  68.             pripravenost = 3;
  69.             postInit();
  70.         } else {
  71.             pripravenost = 1;
  72.         }
  73.         return view;
  74.     }
  75.  
  76.     public void init(long listID, MainActivity.ClickCallback clickCallBack) {
  77.         this.clickCallBack = clickCallBack;
  78.         this.listID = listID;
  79.         if (pripravenost == 1 || pripravenost == 3) {
  80.             pripravenost = 3;
  81.             postInit();
  82.         } else {
  83.             pripravenost = 2;
  84.         }
  85.     }
  86.  
  87.     /**
  88.      * nacte data a naplni Viewy
  89.      * loads data and fill Views
  90.      */
  91.     private void postInit() {
  92.         adapter = new UkolListAdapter(getContext(), clickCallBack);
  93.         if (model != null){ //odstaneni starych observeru
  94.             model.list.removeObservers(this);
  95.         }
  96.         model = ViewModelProviders.of(this).get(UkolViewModel.class);
  97.         model.init(DMO.getDao(), listID, this);
  98.         recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
  99.         recyclerView.setAdapter(adapter);
  100.         model.list.observe(this, new Observer<PagedList<UkolOrHeader>>() {
  101.             @Override
  102.             public void onChanged(@Nullable PagedList<UkolOrHeader> ukolOrHeaders) {
  103.                 adapter.submitList(ukolOrHeaders);
  104.             }
  105.         });
  106.  
  107.         addButton.setOnClickListener(new View.OnClickListener() {
  108.             @Override
  109.             public void onClick(View view) {
  110.                 clickCallBack.add();
  111.             }
  112.         });
  113.     }
  114.  
  115.     @Override
  116.     public void onSaveInstanceState(Bundle outState) {
  117.         super.onSaveInstanceState(outState);
  118.         //outState.putLong(SIS_LIST_ID, listID);
  119.     }
  120.  
  121.     public static class UkolViewModel extends ViewModel {
  122.         public LiveData<PagedList<UkolOrHeader>> list;
  123.         public LiveData<Integer> headers;
  124.  
  125.         public void init(MojeDAO dao, Long listID, LifecycleOwner owner) {
  126.             if (headers != null){ //odstraneni predchozich observeru
  127.                 headers.removeObservers(owner);
  128.             }
  129.             final MyDatasource.Factory factory = new MyDatasource.Factory(dao.loadUkolsFactory(listID), listID);
  130.             list = new LivePagedListBuilder<>(factory, 20).build();
  131.         }
  132.  
  133.         public UkolViewModel() {
  134.         }
  135.     }
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement