Optimize vod list

fongmi
jhengazuki 2 months ago
parent 421b619656
commit 0e9015772f
  1. 8
      app/src/main/java/com/fongmi/android/tv/bean/Vod.java
  2. 10
      app/src/main/java/com/fongmi/android/tv/ui/adapter/BaseDiffAdapter.java
  3. 26
      app/src/mobile/java/com/fongmi/android/tv/ui/adapter/VodAdapter.java
  4. 8
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java

@ -25,6 +25,7 @@ import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
@Root(strict = false)
public class Vod implements Parcelable, Diffable<Vod> {
@ -309,6 +310,11 @@ public class Vod implements Parcelable, Diffable<Vod> {
return getVodId().equals(it.getVodId());
}
@Override
public int hashCode() {
return Objects.hash(getVodId());
}
@Override
public int describeContents() {
return 0;
@ -382,6 +388,6 @@ public class Vod implements Parcelable, Diffable<Vod> {
@Override
public boolean isSameContent(Vod other) {
return getVodName().equals(other.getVodName()) && getVodPic().equals(other.getVodPic()) && getVodRemarks().equals(other.getVodRemarks()) && getSite().equals(other.getSite());
return getVodName().equals(other.getVodName()) && getVodPic().equals(other.getVodPic()) && getVodRemarks().equals(other.getVodRemarks()) && Objects.equals(getSite(), other.getSite());
}
}

@ -33,11 +33,11 @@ public abstract class BaseDiffAdapter<T extends Diffable<T>, VH extends Recycler
}
public void setItems(List<T> items, Runnable runnable) {
differ.submitList(items, runnable);
}
public void addItem(T item) {
addItem(item, null);
if (items == null || items.isEmpty()) {
differ.submitList(new ArrayList<>(), runnable);
} else {
differ.submitList(items, runnable);
}
}
public void addItem(T item, Runnable runnable) {

@ -4,7 +4,6 @@ import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.fongmi.android.tv.bean.Style;
import com.fongmi.android.tv.bean.Vod;
@ -17,19 +16,14 @@ import com.fongmi.android.tv.ui.holder.VodListHolder;
import com.fongmi.android.tv.ui.holder.VodOvalHolder;
import com.fongmi.android.tv.ui.holder.VodRectHolder;
import java.util.ArrayList;
import java.util.List;
public class VodAdapter extends RecyclerView.Adapter<BaseVodHolder> {
public class VodAdapter extends BaseDiffAdapter<Vod, BaseVodHolder> {
private final OnClickListener listener;
private final List<Vod> mItems;
private final Style style;
private final int[] size;
public VodAdapter(OnClickListener listener, Style style, int[] size) {
this.listener = listener;
this.mItems = new ArrayList<>();
this.style = style;
this.size = size;
}
@ -45,22 +39,6 @@ public class VodAdapter extends RecyclerView.Adapter<BaseVodHolder> {
return style;
}
public void addAll(List<Vod> items) {
int position = mItems.size() + 1;
mItems.addAll(items);
notifyItemRangeInserted(position, items.size());
}
public void clear() {
mItems.clear();
notifyDataSetChanged();
}
@Override
public int getItemCount() {
return mItems.size();
}
@Override
public int getItemViewType(int position) {
return style.getViewType();
@ -68,7 +46,7 @@ public class VodAdapter extends RecyclerView.Adapter<BaseVodHolder> {
@Override
public void onBindViewHolder(@NonNull BaseVodHolder holder, int position) {
holder.initView(mItems.get(position));
holder.initView(getItem(position));
}
@Override

@ -131,17 +131,15 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac
}
private void getHome() {
mViewModel.homeContent();
mAdapter.clear();
mAdapter.clear(() -> mViewModel.homeContent());
}
private void getVideo() {
mScroller.reset();
getVideo(getTypeId(), "1");
mAdapter.clear(() -> getVideo(getTypeId(), "1"));
}
private void getVideo(String typeId, String page) {
if ("1".equals(page)) mAdapter.clear();
if ("1".equals(page) && !mBinding.swipeLayout.isRefreshing()) mBinding.progressLayout.showProgress();
if (isHome() && "1".equals(page)) setAdapter(getParent().getResult());
else mViewModel.categoryContent(getKey(), typeId, page, true, mExtends);
@ -160,7 +158,7 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac
private void addVideo(Result result) {
Style style = result.getList().get(0).getStyle(getStyle());
if (!style.equals(mAdapter.getStyle())) setStyle(style);
mAdapter.addAll(result.getList());
mAdapter.addItems(result.getList());
}
private void checkMore(int count) {

Loading…
Cancel
Save