diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/TypeAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/TypeAdapter.java index 2c84588f1..4f4cdcfe8 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/TypeAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/TypeAdapter.java @@ -20,6 +20,7 @@ public class TypeAdapter extends RecyclerView.Adapter { public TypeAdapter() { this.mItems = new ArrayList<>(); + this.mItems.add(home()); } public void setListener(OnClickListener listener) { @@ -49,9 +50,13 @@ public class TypeAdapter extends RecyclerView.Adapter { return type; } - public void addAll(List items) { + public void clear() { mItems.clear(); mItems.add(home()); + notifyDataSetChanged(); + } + + public void addAll(List items) { mItems.addAll(items); notifyDataSetChanged(); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/VodAdapter.java b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/VodAdapter.java index 5bf50a18b..a845452c8 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/VodAdapter.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/adapter/VodAdapter.java @@ -55,6 +55,11 @@ public class VodAdapter extends RecyclerView.Adapter { notifyItemRangeInserted(mItems.size(), items.size()); } + public void clear() { + mItems.clear(); + notifyDataSetChanged(); + } + @Override public int getItemCount() { return mItems.size(); 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 5eab1dd2f..fd425cd6a 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 @@ -30,6 +30,7 @@ import com.fongmi.android.tv.ui.fragment.child.SiteFragment; import com.fongmi.android.tv.utils.ResUtil; import com.google.gson.Gson; +import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; @@ -85,6 +86,7 @@ public class VodFragment extends BaseFragment implements SiteCallback { private void setViewModel() { mViewModel = new ViewModelProvider(this).get(SiteViewModel.class); mViewModel.result.observe(getViewLifecycleOwner(), result -> { + EventBus.getDefault().post(result); mPageAdapter.setResult(result); setAdapter(result); }); @@ -112,7 +114,7 @@ public class VodFragment extends BaseFragment implements SiteCallback { @Override public void setSite(Site item) { ApiConfig.get().setHome(item); - homeContent(); + RefreshEvent.video(); } @Subscribe(threadMode = ThreadMode.MAIN) @@ -121,6 +123,8 @@ public class VodFragment extends BaseFragment implements SiteCallback { } private void homeContent() { + mTypeAdapter.clear(); + mPageAdapter.notifyDataSetChanged(); String home = getSite().getName(); mBinding.title.setText(home.isEmpty() ? ResUtil.getString(R.string.app_name) : home); if (getSite().getKey().isEmpty()) return; @@ -143,7 +147,7 @@ public class VodFragment extends BaseFragment implements SiteCallback { @Override public Fragment getItem(int position) { Class type = mTypeAdapter.get(position); - if (position == 0) return SiteFragment.newInstance(result.getList()); + if (position == 0) return SiteFragment.newInstance(); String filter = new Gson().toJson(result.getFilters().get(type.getTypeId())); return ChildFragment.newInstance(type.getTypeId(), filter, type.getTypeFlag().equals("1")); } @@ -157,5 +161,10 @@ public class VodFragment extends BaseFragment implements SiteCallback { public int getItemPosition(@NonNull Object object) { return POSITION_NONE; } + + @Override + public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { + if (position != 0) super.destroyItem(container, position, object); + } } } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/SiteFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/SiteFragment.java index c3f46dc0c..758c1995c 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/SiteFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/SiteFragment.java @@ -1,6 +1,5 @@ package com.fongmi.android.tv.ui.fragment.child; -import android.os.Bundle; import android.view.LayoutInflater; import android.view.ViewGroup; @@ -10,6 +9,7 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.viewbinding.ViewBinding; import com.fongmi.android.tv.bean.History; +import com.fongmi.android.tv.bean.Result; import com.fongmi.android.tv.bean.Vod; import com.fongmi.android.tv.databinding.FragmentSiteBinding; import com.fongmi.android.tv.event.RefreshEvent; @@ -17,29 +17,18 @@ import com.fongmi.android.tv.ui.activity.BaseFragment; import com.fongmi.android.tv.ui.adapter.HistoryAdapter; import com.fongmi.android.tv.ui.adapter.VodAdapter; import com.fongmi.android.tv.ui.custom.SpaceItemDecoration; -import com.google.gson.Gson; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; -import java.util.List; - public class SiteFragment extends BaseFragment implements VodAdapter.OnClickListener, HistoryAdapter.OnClickListener { private FragmentSiteBinding mBinding; private HistoryAdapter mHistoryAdapter; private VodAdapter mVodAdapter; - private String getList() { - return getArguments().getString("list"); - } - - public static SiteFragment newInstance(List list) { - Bundle args = new Bundle(); - args.putString("list", new Gson().toJson(list)); - SiteFragment fragment = new SiteFragment(); - fragment.setArguments(args); - return fragment; + public static SiteFragment newInstance() { + return new SiteFragment(); } @Override @@ -51,7 +40,6 @@ public class SiteFragment extends BaseFragment implements VodAdapter.OnClickList protected void initView() { setRecyclerView(); getHistory(); - getVideo(); } private void setRecyclerView() { @@ -69,13 +57,8 @@ public class SiteFragment extends BaseFragment implements VodAdapter.OnClickList mHistoryAdapter.addAll(History.get()); } - private void getVideo() { - mVodAdapter.addAll(Vod.arrayFrom(getList())); - } - @Override public void onItemClick(Vod item) { - } @Override @@ -92,9 +75,19 @@ public class SiteFragment extends BaseFragment implements VodAdapter.OnClickList return false; } + @Subscribe(threadMode = ThreadMode.MAIN) + public void onResult(Result result) { + mBinding.progressLayout.showContent(); + mVodAdapter.addAll(result.getList()); + } + @Subscribe(threadMode = ThreadMode.MAIN) public void onRefreshEvent(RefreshEvent event) { switch (event.getType()) { + case VIDEO: + mVodAdapter.clear(); + mBinding.progressLayout.showProgress(); + break; case IMAGE: mVodAdapter.notifyItemRangeChanged(0, mVodAdapter.getItemCount()); break;