pull/606/head
FongMi 4 months ago
parent f84359d242
commit 5c5b402e6d
  1. 8
      app/src/main/java/com/fongmi/android/tv/model/SiteViewModel.java
  2. 4
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  3. 19
      app/src/mobile/java/com/fongmi/android/tv/ui/dialog/EpisodeGridDialog.java
  4. 16
      app/src/mobile/java/com/fongmi/android/tv/ui/dialog/EpisodeListDialog.java
  5. 12
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/EpisodeFragment.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<Result> future;
public final MutableLiveData<Episode> episode;
public final MutableLiveData<Result> result;
public final MutableLiveData<Result> player;
public final MutableLiveData<Result> 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();

@ -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() {

@ -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<String> titles;
private EpisodeAdapter.OnClickListener listener;
private DialogEpisodeGridBinding binding;
private List<Episode> episodes;
private final List<String> 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

@ -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<Episode> episodes;
private SiteViewModel viewModel;
private EpisodeAdapter adapter;
private SideSheetDialog dialog;
private EpisodeAdapter adapter;
private List<Episode> 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();
}
}

@ -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);
}
}

Loading…
Cancel
Save