Support filter select

pull/2/head
FongMi 3 years ago
parent f2a73ecd1e
commit ec39f8ec76
  1. 8
      app/src/main/java/com/fongmi/bear/bean/Filter.java
  2. 4
      app/src/main/java/com/fongmi/bear/ui/activity/HomeActivity.java
  3. 2
      app/src/main/java/com/fongmi/bear/ui/activity/VodActivity.java
  4. 2
      app/src/main/java/com/fongmi/bear/ui/custom/CustomRowPresenter.java
  5. 22
      app/src/main/java/com/fongmi/bear/ui/fragment/VodFragment.java
  6. 18
      app/src/main/java/com/fongmi/bear/ui/presenter/FilterPresenter.java
  7. 11
      app/src/main/java/com/fongmi/bear/utils/Utils.java

@ -64,5 +64,13 @@ public class Filter {
public void setSelect(boolean select) {
this.select = select;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (!(obj instanceof Value)) return false;
Value it = (Value) obj;
return getV().equals(it.getV());
}
}
}

@ -22,7 +22,7 @@ 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.fongmi.bear.utils.Utils;
import com.google.common.collect.Lists;
import java.util.List;
@ -69,7 +69,7 @@ public class HomeActivity extends BaseActivity {
private void setViewModel() {
mSiteViewModel = new ViewModelProvider(this).get(SiteViewModel.class);
mSiteViewModel.mResult.observe(this, result -> {
for (List<Vod> items : Utils.chunkList(result.getList(), 5)) {
for (List<Vod> items : Lists.partition(result.getList(), 5)) {
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter());
adapter.addAll(0, items);
mAdapter.add(new ListRow(adapter));

@ -22,8 +22,8 @@ import com.fongmi.bear.utils.ResUtil;
public class VodActivity extends BaseActivity {
private ActivityVodBinding mBinding;
private TypePresenter mTypePresenter;
private ActivityVodBinding mBinding;
private Result mResult;
private View mOldView;

@ -10,7 +10,7 @@ import com.fongmi.bear.utils.ResUtil;
public class CustomRowPresenter extends ListRowPresenter {
private int spacing;
private final int spacing;
public CustomRowPresenter(int spacing) {
this.spacing = spacing;

@ -22,7 +22,7 @@ import com.fongmi.bear.ui.custom.CustomSelector;
import com.fongmi.bear.ui.presenter.FilterPresenter;
import com.fongmi.bear.ui.presenter.VodPresenter;
import com.fongmi.bear.utils.ResUtil;
import com.fongmi.bear.utils.Utils;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
import java.util.HashMap;
@ -30,9 +30,11 @@ import java.util.List;
public class VodFragment extends Fragment {
private HashMap<String, String> mExtend;
private FragmentVodBinding mBinding;
private SiteViewModel mSiteViewModel;
private ArrayObjectAdapter mAdapter;
private List<Filter> mFilters;
private String getTypeId() {
return getArguments().getString("typeId");
@ -55,6 +57,8 @@ public class VodFragment extends Fragment {
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mBinding = FragmentVodBinding.inflate(inflater, container, false);
mFilters = Filter.arrayFrom(getFilter());
mExtend = new HashMap<>();
return mBinding.getRoot();
}
@ -78,7 +82,7 @@ public class VodFragment extends Fragment {
private void setViewModel() {
mSiteViewModel = new ViewModelProvider(this).get(SiteViewModel.class);
mSiteViewModel.mResult.observe(getViewLifecycleOwner(), result -> {
for (List<Vod> items : Utils.chunkList(result.getList(), 5)) {
for (List<Vod> items : Lists.partition(result.getList(), 5)) {
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter());
adapter.addAll(0, items);
mAdapter.add(new ListRow(adapter));
@ -87,14 +91,22 @@ public class VodFragment extends Fragment {
}
private void setFilter() {
for (Filter filter : Filter.arrayFrom(getFilter())) {
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new FilterPresenter());
for (Filter filter : mFilters) {
FilterPresenter presenter = new FilterPresenter(filter.getKey());
ArrayObjectAdapter adapter = new ArrayObjectAdapter(presenter);
adapter.addAll(0, filter.getValue());
mAdapter.add(new ListRow(adapter));
presenter.setOnClickListener((view, key, item) -> {
if (mExtend.get(key) == null || !mExtend.get(key).equals(item.getV())) {
mExtend.put(key, item.getV());
getContent();
}
});
}
}
private void getContent() {
mSiteViewModel.categoryContent(getTypeId(), "1", true, new HashMap<>());
if (mAdapter.size() > mFilters.size()) mAdapter.removeItems(mFilters.size(), mAdapter.size() - mFilters.size());
mSiteViewModel.categoryContent(getTypeId(), "1", true, mExtend);
}
}

@ -1,6 +1,7 @@
package com.fongmi.bear.ui.presenter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
@ -11,6 +12,21 @@ import com.fongmi.bear.databinding.AdapterFilterBinding;
public class FilterPresenter extends Presenter {
private OnClickListener mListener;
private final String mKey;
public FilterPresenter(String key) {
mKey = key;
}
public interface OnClickListener {
void onItemClick(View view, String key, Filter.Value item);
}
public void setOnClickListener(OnClickListener listener) {
this.mListener = listener;
}
@Override
public Presenter.ViewHolder onCreateViewHolder(ViewGroup parent) {
return new ViewHolder(AdapterFilterBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
@ -21,6 +37,8 @@ public class FilterPresenter extends Presenter {
Filter.Value item = (Filter.Value) object;
ViewHolder holder = (ViewHolder) viewHolder;
holder.binding.name.setText(item.getN());
holder.binding.getRoot().setSelected(item.isSelect());
setOnClickListener(holder, view -> mListener.onItemClick(holder.binding.getRoot(), mKey, item));
}
@Override

@ -16,9 +16,6 @@ import com.fongmi.bear.App;
import com.fongmi.bear.R;
import com.google.android.exoplayer2.util.Util;
import java.util.ArrayList;
import java.util.List;
public class Utils {
public static String getString(int resId) {
@ -91,12 +88,4 @@ public class Utils {
public static String getUserAgent() {
return Util.getUserAgent(App.get(), App.get().getPackageName().concat(".").concat(getUUID()));
}
public static <T> List<List<T>> chunkList(List<T> list, int chunkSize) {
List<List<T>> chunkList = new ArrayList<>(list.size() / chunkSize);
for (int i = 0; i < list.size(); i += chunkSize) {
chunkList.add(list.subList(i, i + chunkSize >= list.size() ? list.size() - 1 : i + chunkSize));
}
return chunkList;
}
}

Loading…
Cancel
Save