From 6d208af2a98635b72f2235d400629c14efc8fb3d Mon Sep 17 00:00:00 2001 From: jhengazuki Date: Fri, 5 Dec 2025 23:51:07 +0800 Subject: [PATCH] Optimize filter --- .../tv/ui/activity/FolderActivity.java | 4 +-- .../tv/ui/fragment/FolderFragment.java | 34 ++++++------------- .../android/tv/ui/fragment/VodFragment.java | 15 ++------ 3 files changed, 14 insertions(+), 39 deletions(-) diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/FolderActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/FolderActivity.java index 9c83fae83..48e1b7149 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/FolderActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/FolderActivity.java @@ -17,8 +17,6 @@ import com.fongmi.android.tv.databinding.ActivityFolderBinding; import com.fongmi.android.tv.ui.base.BaseActivity; import com.fongmi.android.tv.ui.fragment.FolderFragment; -import java.util.HashMap; - public class FolderActivity extends BaseActivity { private ActivityFolderBinding mBinding; @@ -55,7 +53,7 @@ public class FolderActivity extends BaseActivity { setSupportActionBar(mBinding.toolbar); Class type = getResult().getTypes().get(0); setTitle(type.getTypeName()); - getSupportFragmentManager().beginTransaction().replace(R.id.container, FolderFragment.newInstance(getKey(), type.getTypeId(), type.getStyle(), new HashMap<>(), "1".equals(type.getTypeFlag()), 8), "0").commit(); + getSupportFragmentManager().beginTransaction().replace(R.id.container, FolderFragment.newInstance(getKey(), type, 8), "0").commit(); } private FolderFragment getFragment() { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/FolderFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/FolderFragment.java index 0a87429bf..f867a1867 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/FolderFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/FolderFragment.java @@ -10,26 +10,24 @@ import androidx.fragment.app.FragmentTransaction; import androidx.viewbinding.ViewBinding; import com.fongmi.android.tv.R; +import com.fongmi.android.tv.bean.Class; import com.fongmi.android.tv.bean.Result; -import com.fongmi.android.tv.bean.Style; import com.fongmi.android.tv.bean.Value; import com.fongmi.android.tv.databinding.FragmentFolderBinding; import com.fongmi.android.tv.ui.base.BaseFragment; -import com.github.catvod.utils.Prefers; import java.util.HashMap; import java.util.Optional; public class FolderFragment extends BaseFragment { - public static FolderFragment newInstance(String key, String typeId, Style style, HashMap extend, boolean folder, int y) { + private Class mType; + + public static FolderFragment newInstance(String key, Class type, int y) { Bundle args = new Bundle(); args.putInt("y", y); args.putString("key", key); - args.putString("typeId", typeId); - args.putBoolean("folder", folder); - args.putParcelable("style", style); - args.putSerializable("extend", extend); + args.putParcelable("type", type); FolderFragment fragment = new FolderFragment(); fragment.setArguments(args); return fragment; @@ -39,20 +37,8 @@ public class FolderFragment extends BaseFragment { return getArguments().getString("key"); } - private String getTypeId() { - return getArguments().getString("typeId"); - } - - private boolean getFolder() { - return getArguments().getBoolean("folder"); - } - - private Style getStyle() { - return getArguments().getParcelable("style"); - } - - private HashMap getExtend() { - return (HashMap) getArguments().getSerializable("extend"); + public Class getType() { + return getArguments().getParcelable("type"); } private int getY() { @@ -74,12 +60,12 @@ public class FolderFragment extends BaseFragment { @Override protected void initView() { - getChildFragmentManager().beginTransaction().replace(R.id.container, TypeFragment.newInstance(getKey(), getTypeId(), getStyle(), getExtend(), getFolder(), getY())).commit(); + mType = getType(); + getChildFragmentManager().beginTransaction().replace(R.id.container, TypeFragment.newInstance(getKey(), mType.getTypeId(), mType.getStyle(), mType.getExtend(true), mType.isFolder(), getY())).commit(); } public void openFolder(String typeId, HashMap extend) { - Prefers.put("filter_" + getKey() + "_" + typeId, Prefers.getString("filter_" + getKey() + "_" + getTypeId())); - TypeFragment next = TypeFragment.newInstance(getKey(), typeId, getStyle(), extend, getFolder(), getY()); + TypeFragment next = TypeFragment.newInstance(getKey(), typeId, mType.getStyle(), extend, mType.isFolder(), getY()); FragmentTransaction ft = getChildFragmentManager().beginTransaction(); Optional.ofNullable(getChild()).ifPresent(ft::hide); ft.add(R.id.container, next); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java index 5702bed93..0267a6a5d 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java @@ -55,7 +55,6 @@ import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Optional; @@ -133,19 +132,11 @@ public class VodFragment extends BaseFragment implements ConfigCallback, SiteCal private void setViewModel() { mViewModel = new ViewModelProvider(this).get(SiteViewModel.class); - mViewModel.result.observe(getViewLifecycleOwner(), result -> setAdapter(mResult = result)); - } - - private Result handle(Result result) { - List types = new ArrayList<>(); - for (Class type : result.getTypes()) if (result.getFilters().containsKey(type.getTypeId())) type.setFilters(result.getFilters().get(type.getTypeId())); - for (String cate : getHome().getCategories()) for (Class type : result.getTypes()) if (cate.equals(type.getTypeName())) types.add(type); - result.setTypes(types); - return result; + mViewModel.result.observe(getViewLifecycleOwner(), this::setAdapter); } private void setAdapter(Result result) { - mAdapter.addAll(handle(result)); + mAdapter.addAll(mResult = result); mBinding.pager.getAdapter().notifyDataSetChanged(); setFabVisible(0); hideProgress(); @@ -341,7 +332,7 @@ public class VodFragment extends BaseFragment implements ConfigCallback, SiteCal @Override public Fragment getItem(int position) { Class type = mAdapter.get(position); - return FolderFragment.newInstance(getHome().getKey(), type.getTypeId(), type.getStyle(), type.getExtend(true), "1".equals(type.getTypeFlag()), 4); + return FolderFragment.newInstance(getHome().getKey(), type, 4); } @Override