Auto fit vod size, 5 or 6

pull/2/head
FongMi 3 years ago
parent 22487a2ece
commit a8b3041181
  1. 18
      app/src/main/java/com/fongmi/bear/bean/Result.java
  2. 5
      app/src/main/java/com/fongmi/bear/ui/activity/HomeActivity.java
  3. 3
      app/src/main/java/com/fongmi/bear/ui/custom/CustomHorizontalGridView.java
  4. 3
      app/src/main/java/com/fongmi/bear/ui/custom/CustomViewPager.java
  5. 5
      app/src/main/java/com/fongmi/bear/ui/fragment/VodFragment.java
  6. 11
      app/src/main/java/com/fongmi/bear/ui/presenter/VodPresenter.java

@ -2,6 +2,7 @@ package com.fongmi.bear.bean;
import androidx.annotation.NonNull;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
@ -61,6 +62,17 @@ public class Result {
return filters == null ? new LinkedHashMap<>() : filters;
}
public List<List<Vod>> partition() {
if (getList().size() % 6 == 0) return Lists.partition(getList(), 6);
else return Lists.partition(getList(), 5);
}
@NonNull
@Override
public String toString() {
return new Gson().toJson(this);
}
static class FiltersAdapter implements JsonDeserializer<LinkedHashMap<String, List<Filter>>> {
@Override
@ -78,10 +90,4 @@ public class Result {
return filterMap;
}
}
@NonNull
@Override
public String toString() {
return new Gson().toJson(this);
}
}

@ -22,7 +22,6 @@ import com.fongmi.bear.ui.presenter.FuncPresenter;
import com.fongmi.bear.ui.presenter.TitlePresenter;
import com.fongmi.bear.ui.presenter.VodPresenter;
import com.fongmi.bear.utils.ResUtil;
import com.google.common.collect.Lists;
import java.util.List;
@ -68,8 +67,8 @@ public class HomeActivity extends BaseActivity {
private void setViewModel() {
mSiteViewModel = new ViewModelProvider(this).get(SiteViewModel.class);
mSiteViewModel.mResult.observe(this, result -> {
for (List<Vod> items : Lists.partition(result.getList(), 5)) {
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter());
for (List<Vod> items : result.partition()) {
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter(items.size()));
adapter.addAll(0, items);
mAdapter.add(new ListRow(adapter));
}

@ -89,8 +89,7 @@ public class CustomHorizontalGridView extends HorizontalGridView {
currentFocused = null;
} else if (currentFocused != null) {
boolean isChild = false;
for (ViewParent parent = currentFocused.getParent(); parent instanceof ViewGroup;
parent = parent.getParent()) {
for (ViewParent parent = currentFocused.getParent(); parent instanceof ViewGroup; parent = parent.getParent()) {
if (parent == this) {
isChild = true;
break;

@ -74,8 +74,7 @@ public class CustomViewPager extends ViewPager {
currentFocused = null;
} else if (currentFocused != null) {
boolean isChild = false;
for (ViewParent parent = currentFocused.getParent(); parent instanceof ViewGroup;
parent = parent.getParent()) {
for (ViewParent parent = currentFocused.getParent(); parent instanceof ViewGroup; parent = parent.getParent()) {
if (parent == this) {
isChild = true;
break;

@ -24,7 +24,6 @@ import com.fongmi.bear.ui.presenter.FilterPresenter;
import com.fongmi.bear.ui.presenter.ProgressPresenter;
import com.fongmi.bear.ui.presenter.VodPresenter;
import com.fongmi.bear.utils.ResUtil;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
import java.util.HashMap;
@ -89,8 +88,8 @@ public class VodFragment extends Fragment implements Scroller.Callback {
mSiteViewModel.mResult.observe(getViewLifecycleOwner(), result -> {
mAdapter.remove("progress");
mScroller.endLoading(result.getList().isEmpty());
for (List<Vod> items : Lists.partition(result.getList(), 5)) {
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter());
for (List<Vod> items : result.partition()) {
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter(items.size()));
adapter.addAll(0, items);
mAdapter.add(new ListRow(adapter));
}

@ -9,11 +9,17 @@ import androidx.leanback.widget.Presenter;
import com.fongmi.bear.bean.Func;
import com.fongmi.bear.bean.Vod;
import com.fongmi.bear.databinding.AdapterVodBinding;
import com.fongmi.bear.utils.ResUtil;
import com.fongmi.bear.utils.Utils;
public class VodPresenter extends Presenter {
private OnClickListener mListener;
private final int mCount;
public VodPresenter(int count) {
mCount = count;
}
public interface OnClickListener {
void onItemClick(Func item);
@ -25,7 +31,10 @@ public class VodPresenter extends Presenter {
@Override
public Presenter.ViewHolder onCreateViewHolder(ViewGroup parent) {
return new ViewHolder(AdapterVodBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
ViewHolder holder = new ViewHolder(AdapterVodBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
holder.binding.getRoot().getLayoutParams().width = ResUtil.dp2px(mCount == 5 ? 150 : 144);
holder.binding.getRoot().getLayoutParams().height = ResUtil.dp2px(mCount == 5 ? 200 : 192);
return holder;
}
@Override

Loading…
Cancel
Save