Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package cz.grejtCZ.ukolnicek.android.headeredList;
- import android.arch.lifecycle.LifecycleOwner;
- import android.arch.lifecycle.LiveData;
- import android.arch.lifecycle.Observer;
- import android.arch.lifecycle.ViewModel;
- import android.arch.lifecycle.ViewModelProviders;
- import android.arch.paging.LivePagedListBuilder;
- import android.arch.paging.PagedList;
- import android.os.Bundle;
- import android.support.annotation.Nullable;
- import android.support.design.widget.FloatingActionButton;
- import android.support.v4.app.Fragment;
- import android.support.v7.widget.LinearLayoutManager;
- import android.support.v7.widget.RecyclerView;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import cz.grejtCZ.ukolnicek.android.R;
- import cz.grejtCZ.ukolnicek.android.activity.MainActivity;
- import cz.grejtCZ.ukolnicek.android.sql.DMO;
- import cz.grejtCZ.ukolnicek.android.sql.MojeDAO;
- /**
- */
- public class UkolListFragment extends Fragment {
- private static final String SIS_LIST_ID = "listID";
- 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
- private long listID;
- RecyclerView recyclerView;
- FloatingActionButton addButton;
- UkolListAdapter adapter;
- UkolViewModel model;
- private MainActivity.ClickCallback clickCallBack;
- public UkolListFragment() {
- // Required empty public constructor
- }
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- if (savedInstanceState != null && savedInstanceState.containsKey(SIS_LIST_ID)) {
- listID = savedInstanceState.getLong(SIS_LIST_ID);
- if (pripravenost == 1) {
- pripravenost = 3;
- postInit();
- } else {
- pripravenost = 2;
- }
- }
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.fragment_ukol_list, container, false);
- recyclerView = view.findViewById(R.id.recyclerView);
- addButton = view.findViewById(R.id.addButton);
- if (pripravenost == 2) {
- pripravenost = 3;
- postInit();
- } else {
- pripravenost = 1;
- }
- return view;
- }
- public void init(long listID, MainActivity.ClickCallback clickCallBack) {
- this.clickCallBack = clickCallBack;
- this.listID = listID;
- if (pripravenost == 1 || pripravenost == 3) {
- pripravenost = 3;
- postInit();
- } else {
- pripravenost = 2;
- }
- }
- /**
- * nacte data a naplni Viewy
- * loads data and fill Views
- */
- private void postInit() {
- adapter = new UkolListAdapter(getContext(), clickCallBack);
- if (model != null){ //odstaneni starych observeru
- model.list.removeObservers(this);
- }
- model = ViewModelProviders.of(this).get(UkolViewModel.class);
- model.init(DMO.getDao(), listID, this);
- recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
- recyclerView.setAdapter(adapter);
- model.list.observe(this, new Observer<PagedList<UkolOrHeader>>() {
- @Override
- public void onChanged(@Nullable PagedList<UkolOrHeader> ukolOrHeaders) {
- adapter.submitList(ukolOrHeaders);
- }
- });
- addButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- clickCallBack.add();
- }
- });
- }
- @Override
- public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- //outState.putLong(SIS_LIST_ID, listID);
- }
- public static class UkolViewModel extends ViewModel {
- public LiveData<PagedList<UkolOrHeader>> list;
- public LiveData<Integer> headers;
- public void init(MojeDAO dao, Long listID, LifecycleOwner owner) {
- if (headers != null){ //odstraneni predchozich observeru
- headers.removeObservers(owner);
- }
- final MyDatasource.Factory factory = new MyDatasource.Factory(dao.loadUkolsFactory(listID), listID);
- list = new LivePagedListBuilder<>(factory, 20).build();
- }
- public UkolViewModel() {
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement