[mobile] support categoryContent

pull/123/head
FongMi 3 years ago
parent 9479b75b56
commit 31a3dedc87
  1. 1
      app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java
  2. 22
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java
  3. 50
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/TypeFragment.java
  4. 6
      app/src/mobile/res/layout/fragment_site.xml
  5. 0
      app/src/mobile/res/layout/fragment_type.xml
  6. 1
      app/src/mobile/res/layout/fragment_vod.xml

@ -54,6 +54,7 @@ public class SiteDialog implements SiteAdapter.OnClickListener {
private void setRecyclerView() {
binding.recycler.setAdapter(adapter);
binding.recycler.setItemAnimator(null);
binding.recycler.setHasFixedSize(true);
binding.recycler.addItemDecoration(new SpaceItemDecoration(1, 16));
binding.recycler.scrollToPosition(ApiConfig.getHomeIndex());

@ -25,8 +25,8 @@ import com.fongmi.android.tv.model.SiteViewModel;
import com.fongmi.android.tv.ui.activity.BaseFragment;
import com.fongmi.android.tv.ui.adapter.TypeAdapter;
import com.fongmi.android.tv.ui.custom.dialog.SiteDialog;
import com.fongmi.android.tv.ui.fragment.child.ChildFragment;
import com.fongmi.android.tv.ui.fragment.child.SiteFragment;
import com.fongmi.android.tv.ui.fragment.child.TypeFragment;
import com.fongmi.android.tv.utils.ResUtil;
import com.google.gson.Gson;
@ -43,6 +43,7 @@ public class VodFragment extends BaseFragment implements SiteCallback {
private SiteViewModel mViewModel;
private TypeAdapter mTypeAdapter;
private PageAdapter mPageAdapter;
private boolean destroy;
public static VodFragment newInstance() {
return new VodFragment();
@ -52,6 +53,14 @@ public class VodFragment extends BaseFragment implements SiteCallback {
return ApiConfig.get().getHome();
}
public boolean isDestroy() {
return destroy;
}
public void setDestroy(boolean destroy) {
this.destroy = destroy;
}
@Override
protected ViewBinding getBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container) {
return mBinding = FragmentVodBinding.inflate(inflater, container, false);
@ -89,6 +98,7 @@ public class VodFragment extends BaseFragment implements SiteCallback {
EventBus.getDefault().post(result);
mPageAdapter.setResult(result);
setAdapter(result);
setDestroy(false);
});
}
@ -107,7 +117,7 @@ public class VodFragment extends BaseFragment implements SiteCallback {
mBinding.pager.setCurrentItem(0);
}
public void onTitle(View view) {
private void onTitle(View view) {
SiteDialog.create(this).filter(true).show();
}
@ -123,12 +133,12 @@ public class VodFragment extends BaseFragment implements SiteCallback {
}
private void homeContent() {
setDestroy(true);
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;
mViewModel.homeContent();
if (!getSite().getKey().isEmpty()) mViewModel.homeContent();
}
class PageAdapter extends FragmentStatePagerAdapter {
@ -149,7 +159,7 @@ public class VodFragment extends BaseFragment implements SiteCallback {
Class type = mTypeAdapter.get(position);
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"));
return TypeFragment.newInstance(type.getTypeId(), filter, type.getTypeFlag().equals("1"));
}
@Override
@ -164,7 +174,7 @@ public class VodFragment extends BaseFragment implements SiteCallback {
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
if (position != 0) super.destroyItem(container, position, object);
if (position != 0 && isDestroy()) super.destroyItem(container, position, object);
}
}
}

@ -10,9 +10,10 @@ import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.bean.Filter;
import com.fongmi.android.tv.bean.Vod;
import com.fongmi.android.tv.databinding.FragmentChildBinding;
import com.fongmi.android.tv.databinding.FragmentTypeBinding;
import com.fongmi.android.tv.model.SiteViewModel;
import com.fongmi.android.tv.ui.activity.BaseFragment;
import com.fongmi.android.tv.ui.adapter.VodAdapter;
@ -23,15 +24,26 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class ChildFragment extends BaseFragment implements CustomScroller.Callback, VodAdapter.OnClickListener {
public class TypeFragment extends BaseFragment implements CustomScroller.Callback, VodAdapter.OnClickListener {
private FragmentChildBinding mBinding;
private HashMap<String, String> mExtend;
private SiteViewModel mViewModel;
private FragmentTypeBinding mBinding;
private CustomScroller mScroller;
private SiteViewModel mViewModel;
private List<Filter> mFilters;
private List<String> mTypeIds;
private VodAdapter mAdapter;
private boolean mOpen;
public static TypeFragment newInstance(String typeId, String filter, boolean folder) {
Bundle args = new Bundle();
args.putString("typeId", typeId);
args.putString("filter", filter);
args.putBoolean("folder", folder);
TypeFragment fragment = new TypeFragment();
fragment.setArguments(args);
return fragment;
}
private String getTypeId() {
return getArguments().getString("typeId");
@ -45,19 +57,9 @@ public class ChildFragment extends BaseFragment implements CustomScroller.Callba
return getArguments().getBoolean("folder");
}
public static ChildFragment newInstance(String typeId, String filter, boolean folder) {
Bundle args = new Bundle();
args.putString("typeId", typeId);
args.putString("filter", filter);
args.putBoolean("folder", folder);
ChildFragment fragment = new ChildFragment();
fragment.setArguments(args);
return fragment;
}
@Override
protected ViewBinding getBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container) {
return mBinding = FragmentChildBinding.inflate(inflater, container, false);
return mBinding = FragmentTypeBinding.inflate(inflater, container, false);
}
@Override
@ -82,8 +84,8 @@ public class ChildFragment extends BaseFragment implements CustomScroller.Callba
private void setViewModel() {
mViewModel = new ViewModelProvider(this).get(SiteViewModel.class);
mViewModel.result.observe(getViewLifecycleOwner(), result -> {
mBinding.progressLayout.showContent(isFolder(), result.getList().size());
mScroller.endLoading(result.getList().isEmpty());
mBinding.progressLayout.showContent();
mAdapter.addAll(result.getList());
checkPage();
});
@ -96,16 +98,14 @@ public class ChildFragment extends BaseFragment implements CustomScroller.Callba
private void checkPage() {
if (mScroller.getPage() != 1 || mAdapter.getItemCount() >= 4 || isFolder()) return;
mScroller.addPage();
getVideo(getTypeId(), "2");
if (mScroller.addPage()) getVideo(getTypeId(), "2");
}
private void getVideo(String typeId, String page) {
if (isFolder()) mTypeIds.add(typeId);
if (isFolder()) mBinding.recycler.scrollToPosition(0);
boolean clear = page.equals("1") && mAdapter.getItemCount() > mFilters.size();
//if (clear) mAdapter.removeItems(mFilters.size(), mAdapter.size() - mFilters.size());
//mViewModel.categoryContent(typeId, page, true, mExtend);
if (isFolder() && !mOpen) mBinding.recycler.scrollToPosition(0);
if (page.equals("1")) mAdapter.clear();
mViewModel.categoryContent(ApiConfig.get().getHome().getKey(), typeId, page, true, mExtend);
}
@Override
@ -124,4 +124,10 @@ public class ChildFragment extends BaseFragment implements CustomScroller.Callba
public boolean onLongClick(Vod item) {
return false;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (mBinding != null && !isVisibleToUser) mBinding.recycler.scrollToPosition(0);
}
}

@ -21,8 +21,7 @@
android:id="@+id/history"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:nestedScrollingEnabled="false" />
android:layout_marginTop="16dp" />
<TextView
android:layout_width="wrap_content"
@ -41,8 +40,7 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recommend"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:nestedScrollingEnabled="false" />
android:layout_height="match_parent" />
</com.fongmi.android.tv.ui.custom.ProgressLayout>
</LinearLayout>

@ -35,7 +35,6 @@
android:paddingTop="8dp"
android:paddingEnd="8dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_scrollFlags="scroll|enterAlways"
tools:listitem="@layout/adapter_type" />
</com.google.android.material.appbar.AppBarLayout>

Loading…
Cancel
Save