diff --git a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java index ce1f0bb3e..a70ade39d 100644 --- a/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java +++ b/app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java @@ -11,7 +11,6 @@ import com.fongmi.android.tv.Constant; import com.fongmi.android.tv.R; import com.fongmi.android.tv.api.config.VodConfig; import com.fongmi.android.tv.bean.Class; -import com.fongmi.android.tv.bean.Episode; import com.fongmi.android.tv.bean.Result; import com.fongmi.android.tv.bean.Site; import com.fongmi.android.tv.bean.Vod; @@ -48,7 +47,6 @@ public class SiteViewModel extends ViewModel { private final AtomicInteger taskId; private Future future; - public final MutableLiveData episode; public final MutableLiveData result; public final MutableLiveData player; public final MutableLiveData search; @@ -56,7 +54,6 @@ public class SiteViewModel extends ViewModel { public SiteViewModel() { taskId = new AtomicInteger(0); - episode = new MutableLiveData<>(); result = new MutableLiveData<>(); player = new MutableLiveData<>(); search = new MutableLiveData<>(); @@ -70,14 +67,9 @@ public class SiteViewModel extends ViewModel { result.setValue(null); player.setValue(null); action.setValue(null); - episode.setValue(null); return this; } - public void setEpisode(Episode value) { - episode.setValue(value); - } - public void homeContent() { execute(result, () -> { Site site = VodConfig.get().getHome(); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index de4f7e314..37f4d56c6 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -421,10 +421,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mViewModel.result.observeForever(mObserveDetail); mViewModel.player.observeForever(mObservePlayer); mViewModel.search.observeForever(mObserveSearch); - mViewModel.episode.observe(this, episode -> { - onItemClick(episode); - hideSheet(); - }); } private void checkId() { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/EpisodeGridDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/EpisodeGridDialog.java index b9bb3ca52..b38f0f52f 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/EpisodeGridDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/EpisodeGridDialog.java @@ -12,6 +12,7 @@ import androidx.viewpager2.adapter.FragmentStateAdapter; import com.fongmi.android.tv.bean.Episode; import com.fongmi.android.tv.databinding.DialogEpisodeGridBinding; +import com.fongmi.android.tv.ui.adapter.EpisodeAdapter; import com.fongmi.android.tv.ui.fragment.EpisodeFragment; import com.fongmi.android.tv.utils.ResUtil; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; @@ -22,9 +23,10 @@ import java.util.List; public class EpisodeGridDialog extends BaseDialog { + private final List titles; + private EpisodeAdapter.OnClickListener listener; private DialogEpisodeGridBinding binding; private List episodes; - private final List titles; private boolean reverse; private int spanCount; private int itemCount; @@ -50,6 +52,7 @@ public class EpisodeGridDialog extends BaseDialog { public void show(FragmentActivity activity) { for (Fragment f : activity.getSupportFragmentManager().getFragments()) if (f instanceof BottomSheetDialogFragment) return; + this.listener = (EpisodeAdapter.OnClickListener) activity; show(activity.getSupportFragmentManager(), null); } @@ -65,6 +68,14 @@ public class EpisodeGridDialog extends BaseDialog { setPager(); } + @Override + protected void initEvent() { + getChildFragmentManager().setFragmentResultListener("result", this, (requestKey, bundle) -> { + listener.onItemClick(bundle.getParcelable("episode")); + dismiss(); + }); + } + private void setSpanCount() { int total = 0; int row = ResUtil.isLand(requireActivity()) ? 5 : 10; @@ -83,7 +94,7 @@ public class EpisodeGridDialog extends BaseDialog { } private void setPager() { - binding.pager.setAdapter(new PageAdapter(requireActivity())); + binding.pager.setAdapter(new PageAdapter(this)); new TabLayoutMediator(binding.tabs, binding.pager, (tab, position) -> tab.setText(titles.get(position))).attach(); setCurrentPage(); } @@ -99,8 +110,8 @@ public class EpisodeGridDialog extends BaseDialog { class PageAdapter extends FragmentStateAdapter { - public PageAdapter(@NonNull FragmentActivity activity) { - super(activity); + public PageAdapter(@NonNull Fragment fragment) { + super(fragment); } @NonNull diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/EpisodeListDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/EpisodeListDialog.java index 43e95b34b..81d0720ac 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/EpisodeListDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/EpisodeListDialog.java @@ -6,11 +6,9 @@ import android.view.WindowManager; import android.widget.FrameLayout; import androidx.fragment.app.FragmentActivity; -import androidx.lifecycle.ViewModelProvider; import com.fongmi.android.tv.bean.Episode; import com.fongmi.android.tv.databinding.DialogEpisodeListBinding; -import com.fongmi.android.tv.model.SiteViewModel; import com.fongmi.android.tv.ui.adapter.EpisodeAdapter; import com.fongmi.android.tv.ui.base.ViewType; import com.fongmi.android.tv.utils.ResUtil; @@ -20,18 +18,19 @@ import java.util.List; public class EpisodeListDialog implements EpisodeAdapter.OnClickListener { + private final EpisodeAdapter.OnClickListener listener; private final FragmentActivity activity; private DialogEpisodeListBinding binding; - private List episodes; - private SiteViewModel viewModel; - private EpisodeAdapter adapter; private SideSheetDialog dialog; + private EpisodeAdapter adapter; + private List episodes; public static EpisodeListDialog create(FragmentActivity activity) { return new EpisodeListDialog(activity); } public EpisodeListDialog(FragmentActivity activity) { + this.listener = (EpisodeAdapter.OnClickListener) activity; this.activity = activity; } @@ -68,7 +67,6 @@ public class EpisodeListDialog implements EpisodeAdapter.OnClickListener { private void initView() { setRecyclerView(); - setViewModel(); setEpisode(); } @@ -78,10 +76,6 @@ public class EpisodeListDialog implements EpisodeAdapter.OnClickListener { binding.recycler.setAdapter(adapter = new EpisodeAdapter(this, ViewType.GRID)); } - private void setViewModel() { - viewModel = new ViewModelProvider(activity).get(SiteViewModel.class); - } - private void setEpisode() { adapter.addAll(episodes); binding.recycler.scrollToPosition(adapter.getPosition()); @@ -89,7 +83,7 @@ public class EpisodeListDialog implements EpisodeAdapter.OnClickListener { @Override public void onItemClick(Episode item) { - viewModel.setEpisode(item); + listener.onItemClick(item); dialog.dismiss(); } } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/EpisodeFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/EpisodeFragment.java index 4bef84b5d..c7317caf6 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/EpisodeFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/EpisodeFragment.java @@ -6,13 +6,11 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.GridLayoutManager; import androidx.viewbinding.ViewBinding; import com.fongmi.android.tv.bean.Episode; import com.fongmi.android.tv.databinding.FragmentEpisodeBinding; -import com.fongmi.android.tv.model.SiteViewModel; import com.fongmi.android.tv.ui.adapter.EpisodeAdapter; import com.fongmi.android.tv.ui.base.BaseFragment; import com.fongmi.android.tv.ui.base.ViewType; @@ -23,7 +21,6 @@ import java.util.List; public class EpisodeFragment extends BaseFragment implements EpisodeAdapter.OnClickListener { private FragmentEpisodeBinding mBinding; - private SiteViewModel mViewModel; private int getSpanCount() { return getArguments().getInt("spanCount"); @@ -50,7 +47,6 @@ public class EpisodeFragment extends BaseFragment implements EpisodeAdapter.OnCl @Override protected void initView() { setRecyclerView(); - setViewModel(); } private void setRecyclerView() { @@ -62,12 +58,10 @@ public class EpisodeFragment extends BaseFragment implements EpisodeAdapter.OnCl mBinding.recycler.scrollToPosition(adapter.getPosition()); } - private void setViewModel() { - mViewModel = new ViewModelProvider(requireActivity()).get(SiteViewModel.class); - } - @Override public void onItemClick(Episode item) { - mViewModel.setEpisode(item); + Bundle result = new Bundle(); + result.putParcelable("episode", item); + getParentFragmentManager().setFragmentResult("result", result); } }