diff --git a/app/src/leanback/java/com/fongmi/android/tv/bean/Func.java b/app/src/leanback/java/com/fongmi/android/tv/bean/Func.java index c4ae9d98b..84725b053 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/bean/Func.java +++ b/app/src/leanback/java/com/fongmi/android/tv/bean/Func.java @@ -2,10 +2,13 @@ package com.fongmi.android.tv.bean; import android.annotation.SuppressLint; +import androidx.annotation.Nullable; + import com.fongmi.android.tv.R; +import com.fongmi.android.tv.impl.Diffable; import com.fongmi.android.tv.utils.ResUtil; -public class Func { +public class Func implements Diffable { private final int resId; private int drawable; @@ -57,4 +60,21 @@ public class Func { break; } } + + @Override + public boolean equals(@Nullable Object obj) { + if (this == obj) return true; + if (!(obj instanceof Func it)) return false; + return getResId() == it.getResId(); + } + + @Override + public boolean isSameItem(Func other) { + return getResId() == other.getResId(); + } + + @Override + public boolean isSameContent(Func other) { + return equals(other); + } } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index 9a1882ca7..b1362d373 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -28,7 +28,6 @@ import com.fongmi.android.tv.api.config.WallConfig; import com.fongmi.android.tv.bean.Config; import com.fongmi.android.tv.bean.Func; import com.fongmi.android.tv.bean.History; -import com.fongmi.android.tv.bean.Keep; import com.fongmi.android.tv.bean.Result; import com.fongmi.android.tv.bean.Site; import com.fongmi.android.tv.bean.Style; @@ -66,12 +65,14 @@ import com.google.common.collect.Lists; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import java.util.ArrayList; import java.util.List; public class HomeActivity extends BaseActivity implements CustomTitleView.Listener, VodPresenter.OnClickListener, FuncPresenter.OnClickListener, HistoryPresenter.OnClickListener { private ActivityHomeBinding mBinding; private ArrayObjectAdapter mHistoryAdapter; + private ArrayObjectAdapter mFuncAdapter; private HistoryPresenter mPresenter; private ArrayObjectAdapter mAdapter; private SiteViewModel mViewModel; @@ -159,10 +160,10 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen } private void setAdapter() { - mAdapter.add(getFuncRow()); + mHistoryAdapter = new ArrayObjectAdapter(mPresenter = new HistoryPresenter(this)); + mAdapter.add(new ListRow(mFuncAdapter = new ArrayObjectAdapter(new FuncPresenter(this)))); mAdapter.add(R.string.home_history); mAdapter.add(R.string.home_recommend); - mHistoryAdapter = new ArrayObjectAdapter(mPresenter = new HistoryPresenter(this)); } private void initConfig() { @@ -187,6 +188,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen getHistory(); getVideo(); setFocus(); + setFunc(); setLogo(); } @@ -196,6 +198,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen mResult = Result.empty(); Notify.show(msg); setFocus(); + setFunc(); } }; } @@ -231,21 +234,21 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen Style style = result.getStyle(getHome().getStyle()); for (List items : Lists.partition(result.getList(), Product.getColumn(style))) { ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter(this, style)); - adapter.setItems(items, null); + adapter.setItems(items, new BaseDiffCallback()); mAdapter.add(new ListRow(adapter)); } } - private ListRow getFuncRow() { - ArrayObjectAdapter adapter = new ArrayObjectAdapter(new FuncPresenter(this)); - adapter.add(Func.create(R.string.home_vod)); - adapter.add(Func.create(R.string.home_live)); - adapter.add(Func.create(R.string.home_search)); - adapter.add(Func.create(R.string.home_keep)); - adapter.add(Func.create(R.string.home_push)); - adapter.add(Func.create(R.string.home_cast)); - adapter.add(Func.create(R.string.home_setting)); - return new ListRow(adapter); + private void setFunc() { + List items = new ArrayList<>(); + items.add(Func.create(R.string.home_vod)); + if (LiveConfig.hasUrl()) items.add(Func.create(R.string.home_live)); + items.add(Func.create(R.string.home_search)); + items.add(Func.create(R.string.home_keep)); + items.add(Func.create(R.string.home_push)); + items.add(Func.create(R.string.home_cast)); + items.add(Func.create(R.string.home_setting)); + mFuncAdapter.setItems(items, new BaseDiffCallback()); } private void getHistory() { @@ -260,7 +263,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen if (renew) mHistoryAdapter = new ArrayObjectAdapter(mPresenter = new HistoryPresenter(this)); if ((items.isEmpty() && exist) || (renew && exist)) mAdapter.removeItems(historyIndex, 1); if ((!items.isEmpty() && !exist) || (renew && exist)) mAdapter.add(historyIndex, new ListRow(mHistoryAdapter)); - mHistoryAdapter.setItems(items, new BaseDiffCallback()); + mHistoryAdapter.setItems(items, new BaseDiffCallback()); } private void setHistoryDelete(boolean delete) { @@ -276,13 +279,11 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen } private int getHistoryIndex() { - for (int i = 0; i < mAdapter.size(); i++) if (mAdapter.get(i).equals(R.string.home_history)) return i + 1; - return -1; + return mAdapter.indexOf(R.string.home_history) + 1; } private int getRecommendIndex() { - for (int i = 0; i < mAdapter.size(); i++) if (mAdapter.get(i).equals(R.string.home_recommend)) return i + 1; - return -1; + return mAdapter.indexOf(R.string.home_recommend) + 1; } private boolean isLoading() { @@ -301,6 +302,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen public void onRefreshEvent(RefreshEvent event) { switch (event.getType()) { case CONFIG: + setFunc(); setLogo(); break; case VIDEO: diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java index 2b717624e..071961a3c 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java @@ -191,6 +191,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit case 1: setCacheText(); Notify.dismiss(); + RefreshEvent.config(); mBinding.liveUrl.setText(LiveConfig.getDesc()); break; case 2: