diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/ConfigAdapter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/ConfigAdapter.java index 4c4ec2bf8..6956c7dab 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/ConfigAdapter.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/adapter/ConfigAdapter.java @@ -14,11 +14,10 @@ import java.util.List; public class ConfigAdapter extends RecyclerView.Adapter { private final OnClickListener mListener; - private final List mItems; + private List mItems; - public ConfigAdapter(OnClickListener listener, int type) { + public ConfigAdapter(OnClickListener listener) { this.mListener = listener; - this.mItems = Config.getAll(type); } public interface OnClickListener { @@ -28,6 +27,11 @@ public class ConfigAdapter extends RecyclerView.Adapter { @@ -20,6 +21,7 @@ public class LiveAdapter extends RecyclerView.Adapter { public LiveAdapter(OnClickListener listener) { this.mListener = listener; this.mItems = LiveConfig.get().getLives(); + Collections.sort(mItems, new Live.Sorter()); } public interface OnClickListener { diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/HistoryDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/HistoryDialog.java index 344e130b0..12f79b47f 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/HistoryDialog.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/HistoryDialog.java @@ -18,8 +18,8 @@ public class HistoryDialog implements ConfigAdapter.OnClickListener { private final DialogHistoryBinding binding; private final ConfigCallback callback; + private final ConfigAdapter adapter; private final AlertDialog dialog; - private ConfigAdapter adapter; private int type; public static HistoryDialog create(Activity activity) { @@ -35,6 +35,7 @@ public class HistoryDialog implements ConfigAdapter.OnClickListener { this.callback = (ConfigCallback) activity; this.binding = DialogHistoryBinding.inflate(LayoutInflater.from(activity)); this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create(); + this.adapter = new ConfigAdapter(this); } public void show() { @@ -45,7 +46,7 @@ public class HistoryDialog implements ConfigAdapter.OnClickListener { private void setRecyclerView() { binding.recycler.setHasFixedSize(true); binding.recycler.addItemDecoration(new SpaceItemDecoration(1, 16)); - binding.recycler.setAdapter(adapter = new ConfigAdapter(this, type)); + binding.recycler.setAdapter(adapter.addAll(type)); } private void setDialog() { diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/LiveDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/LiveDialog.java index 12fd19e04..2b772b517 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/LiveDialog.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/LiveDialog.java @@ -20,7 +20,7 @@ public class LiveDialog implements LiveAdapter.OnClickListener { private final DialogLiveBinding binding; private final LiveCallback callback; private final AlertDialog dialog; - private LiveAdapter adapter; + private final LiveAdapter adapter; public static LiveDialog create(Activity activity) { return new LiveDialog(activity); @@ -30,18 +30,18 @@ public class LiveDialog implements LiveAdapter.OnClickListener { this.callback = (LiveCallback) activity; this.binding = DialogLiveBinding.inflate(LayoutInflater.from(activity)); this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create(); + this.adapter = new LiveAdapter(this); } public void show() { - if (LiveConfig.get().getLives().isEmpty()) return; setRecyclerView(); setDialog(); } private void setRecyclerView() { + binding.recycler.setAdapter(adapter); binding.recycler.setHasFixedSize(true); binding.recycler.addItemDecoration(new SpaceItemDecoration(1, 16)); - binding.recycler.setAdapter(adapter = new LiveAdapter(this)); binding.recycler.scrollToPosition(LiveConfig.getHomeIndex()); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java index 002f360e0..9c4cddc77 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java @@ -35,7 +35,6 @@ public class SiteDialog implements SitePresenter.OnClickListener { } public void show() { - if (ApiConfig.get().getSites().isEmpty()) return; setRecyclerView(); setDialog(); } @@ -48,6 +47,7 @@ public class SiteDialog implements SitePresenter.OnClickListener { } private void setDialog() { + if (adapter.size() == 0) return; WindowManager.LayoutParams params = dialog.getWindow().getAttributes(); params.width = (int) (ResUtil.getScreenWidthPx() * 0.4f); params.height = (int) (ResUtil.getScreenHeightPx() * 0.74f); diff --git a/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java b/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java index 116986f51..1690b4b2d 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java @@ -94,7 +94,7 @@ public class LiveConfig { private void parseTxt(String txt) { Live live = new Live(config.getUrl()); parse(live, txt); - lives.add(live); + addLive(live); setHome(live); } @@ -108,13 +108,18 @@ public class LiveConfig { try { if (live.isProxy()) live = new Live(live.getChannels().get(0).getName(), live.getChannels().get(0).getUrls().get(0).split("ext=")[1]); if (live.getType() == 0) parse(live, getTxt(live.getUrl())); - if (live.getGroups().size() > 0) lives.add(live); + if (live.getGroups().size() > 0) addLive(live); if (live.getName().equals(config.getHome())) setHome(live); } catch (Exception e) { e.printStackTrace(); } } + private void addLive(Live live) { + lives.remove(live); + lives.add(live); + } + private String getTxt(String url) throws Exception { if (url.startsWith("file")) return FileUtil.read(url); else if (url.startsWith("http")) return OKHttp.newCall(url).execute().body().string(); diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Live.java b/app/src/main/java/com/fongmi/android/tv/bean/Live.java index 9cafbc21c..5fba5ae02 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Live.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Live.java @@ -1,5 +1,6 @@ package com.fongmi.android.tv.bean; +import android.net.Uri; import android.text.TextUtils; import com.google.gson.Gson; @@ -7,6 +8,7 @@ import com.google.gson.JsonElement; import com.google.gson.annotations.SerializedName; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; public class Live { @@ -40,7 +42,7 @@ public class Live { } public Live(String url) { - this.name = url; + this.name = Uri.parse(url).getLastPathSegment(); this.url = url; } @@ -112,4 +114,12 @@ public class Live { Live it = (Live) obj; return getName().equals(it.getName()) && getUrl().equals(it.getUrl()); } + + public static class Sorter implements Comparator { + + @Override + public int compare(Live live1, Live live2) { + return Boolean.compare(live2.isActivated(), live1.isActivated()); + } + } }