[mobile] redesign home

pull/123/head
FongMi 3 years ago
parent 49114ee5e1
commit 9479b75b56
  1. 7
      app/src/mobile/java/com/fongmi/android/tv/ui/adapter/TypeAdapter.java
  2. 5
      app/src/mobile/java/com/fongmi/android/tv/ui/adapter/VodAdapter.java
  3. 13
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java
  4. 33
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/SiteFragment.java

@ -20,6 +20,7 @@ public class TypeAdapter extends RecyclerView.Adapter<TypeAdapter.ViewHolder> {
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<TypeAdapter.ViewHolder> {
return type;
}
public void addAll(List<Class> items) {
public void clear() {
mItems.clear();
mItems.add(home());
notifyDataSetChanged();
}
public void addAll(List<Class> items) {
mItems.addAll(items);
notifyDataSetChanged();
}

@ -55,6 +55,11 @@ public class VodAdapter extends RecyclerView.Adapter<VodAdapter.ViewHolder> {
notifyItemRangeInserted(mItems.size(), items.size());
}
public void clear() {
mItems.clear();
notifyDataSetChanged();
}
@Override
public int getItemCount() {
return mItems.size();

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

@ -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<Vod> 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;

Loading…
Cancel
Save