Optimize filter

pull/605/head
jhengazuki 5 months ago
parent eaab51ec96
commit 6d208af2a9
  1. 4
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/FolderActivity.java
  2. 34
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/FolderFragment.java
  3. 15
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.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() {

@ -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<String, String> 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<String, String> getExtend() {
return (HashMap<String, String>) 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<String, String> 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);

@ -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<Class> 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

Loading…
Cancel
Save