Rev 34 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
package com.cesams.twogetskills.fragment;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuInflater;import android.view.View;import android.view.ViewGroup;import androidx.annotation.NonNull;import androidx.annotation.Nullable;import androidx.fragment.app.Fragment;import androidx.lifecycle.LifecycleOwner;import androidx.lifecycle.Observer;import androidx.lifecycle.ViewModelProvider;import androidx.recyclerview.widget.RecyclerView;import com.cesams.twogetskills.R;import com.cesams.twogetskills.activity.MainActivity;import com.cesams.twogetskills.adapter.CapsuleListViewAdapter;import com.cesams.twogetskills.dao.CapsuleDao;import com.cesams.twogetskills.dao.ProgressDao;import com.cesams.twogetskills.dao.TopicDao;import com.cesams.twogetskills.entity.Capsule;import com.cesams.twogetskills.entity.Progress;import com.cesams.twogetskills.entity.Topic;import com.cesams.twogetskills.skeleton.ITwoGetSkills;import com.cesams.twogetskills.viewdata.CapsuleRefreshUIViewData;import com.cesams.twogetskills.viewdata.SlideRefreshUIViewData;import com.cesams.twogetskills.viewmodel.CapsuleRefreshUIViewModel;import com.cesams.twogetskills.viewmodel.CapsuleViewModel;import com.cesams.twogetskills.viewmodel.GalleryViewModel;import com.cesams.twogetskills.viewmodel.SlideRefreshUIViewModel;import java.util.ArrayList;import java.util.List;public class CapsuleFragment extends Fragment implements CapsuleListViewAdapter.ItemClickListener, LifecycleOwner {private final String TAG = "C2GS - CapsuleFragment";private RecyclerView listView;private CapsuleListViewAdapter adapter;private ITwoGetSkills iTwoGetSkills;private CapsuleViewModel mCapsuleViewModel;private CapsuleRefreshUIViewModel mCapsuleRefreshUIViewModel;@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setHasOptionsMenu(true);}@Overridepublic void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {super.onCreateOptionsMenu(menu, inflater);menu.clear();}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {return inflater.inflate(R.layout.fragment_capsule, container, false);}@Overridepublic void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {super.onViewCreated(view, savedInstanceState);iTwoGetSkills = (ITwoGetSkills) getActivity();mCapsuleRefreshUIViewModel = new ViewModelProvider(requireActivity()).get(CapsuleRefreshUIViewModel.class);mCapsuleViewModel = new ViewModelProvider(requireActivity()).get(CapsuleViewModel.class);adapter = new CapsuleListViewAdapter(requireActivity(), mCapsuleViewModel.getCapsuleArrayList());adapter.setClickListener(this);Log.d(TAG, "Declarando el Observador");Observer<ArrayList<Capsule>> capsuleListUpdateObserver = new Observer<ArrayList<Capsule>>() {@Overridepublic void onChanged(ArrayList<Capsule> capsuleArrayList) {adapter.notifyDataSetChanged();}};mCapsuleViewModel.getCapsuleMutableLiveData().observe(requireActivity(),capsuleListUpdateObserver);listView = getView().findViewById(R.id.fragment_capsule_listview);listView.setAdapter(adapter);listView.setHasFixedSize(true);loadData(false);}@Overridepublic void onItemClick(View view, int position){iTwoGetSkills.changeCapsuleActive(mCapsuleViewModel.getCapsuleArrayList().get(position).getUuid());}@Overridepublic void onResume() {super.onResume();loadData(true);}@Overridepublic void onHiddenChanged(boolean hidden) {super.onHiddenChanged(hidden);Log.d(TAG, "onHiddenChanged : " + (hidden ? "true" : "false"));if(!hidden) {loadData(false);}}private void loadData(boolean background) {TopicDao topicDao = iTwoGetSkills.getDatabase().getTopicDao();CapsuleDao capsuleDao = iTwoGetSkills.getDatabase().getCapsuleDao();List<Capsule> dbCapsules;CapsuleRefreshUIViewData CapsuleRefreshUIViewData = mCapsuleRefreshUIViewModel.getCapsuleRefreshUIViewData();if (!background) {Topic topic = topicDao.selectByUuid(iTwoGetSkills.getTopicUuidActive());iTwoGetSkills.setTitleActionBar(topic.getName());dbCapsules = capsuleDao.selectAllByTopicUuid(topic.getUuid());CapsuleRefreshUIViewData.setTopicViewDataName(topic.getName());CapsuleRefreshUIViewData.setTopicUuidViewData(topic.getUuid());mCapsuleRefreshUIViewModel.getCapsuleRefreshUIMutableLiveData().setValue(CapsuleRefreshUIViewData);Log.e("Cargando","Desde elemento topic");} else{dbCapsules = capsuleDao.selectAllByTopicUuid(CapsuleRefreshUIViewData.getTopicUuidViewData());iTwoGetSkills.setTitleActionBar(CapsuleRefreshUIViewData.getTopicViewDataName());Log.e("Cargando","Desde live data");}mCapsuleViewModel.getCapsuleArrayList().clear();Capsule capsule;Progress progress;ProgressDao progressDao = iTwoGetSkills.getDatabase().getProgressDao();for(Capsule dbCapsule : dbCapsules){capsule = new Capsule();capsule.setTopicUuid(dbCapsule.getTopicUuid());capsule.setUuid(dbCapsule.getUuid());capsule.setName(dbCapsule.getName());capsule.setDescription(dbCapsule.getDescription());capsule.setImage(dbCapsule.getImage());capsule.setPosition(dbCapsule.getPosition());progress = progressDao.selectByCapsuleUuid(capsule.getUuid());if(progress != null) {capsule.setCompleted( progress.getCompleted());capsule.setViewSlides(progress.getViewSlides());capsule.setTotalSlides( progress.getTotalSlides());capsule.setProgress(progress.getProgress());}mCapsuleViewModel.getCapsuleArrayList().add(capsule);}mCapsuleViewModel.getCapsuleMutableLiveData().setValue(mCapsuleViewModel.getCapsuleArrayList());}}