Fix live home bug

pull/123/head
FongMi 3 years ago
parent 25e48eeb5f
commit ef133a059c
  1. 10
      app/src/leanback/java/com/fongmi/android/tv/ui/adapter/ConfigAdapter.java
  2. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/adapter/LiveAdapter.java
  3. 5
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/HistoryDialog.java
  4. 6
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/LiveDialog.java
  5. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java
  6. 9
      app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java
  7. 12
      app/src/main/java/com/fongmi/android/tv/bean/Live.java

@ -14,11 +14,10 @@ import java.util.List;
public class ConfigAdapter extends RecyclerView.Adapter<ConfigAdapter.ViewHolder> { public class ConfigAdapter extends RecyclerView.Adapter<ConfigAdapter.ViewHolder> {
private final OnClickListener mListener; private final OnClickListener mListener;
private final List<Config> mItems; private List<Config> mItems;
public ConfigAdapter(OnClickListener listener, int type) { public ConfigAdapter(OnClickListener listener) {
this.mListener = listener; this.mListener = listener;
this.mItems = Config.getAll(type);
} }
public interface OnClickListener { public interface OnClickListener {
@ -28,6 +27,11 @@ public class ConfigAdapter extends RecyclerView.Adapter<ConfigAdapter.ViewHolder
void onDeleteClick(Config item); void onDeleteClick(Config item);
} }
public ConfigAdapter addAll(int type) {
this.mItems = Config.getAll(type);
return this;
}
public int remove(Config item) { public int remove(Config item) {
item.delete(); item.delete();
mItems.remove(item); mItems.remove(item);

@ -10,6 +10,7 @@ import com.fongmi.android.tv.api.LiveConfig;
import com.fongmi.android.tv.bean.Live; import com.fongmi.android.tv.bean.Live;
import com.fongmi.android.tv.databinding.AdapterLiveBinding; import com.fongmi.android.tv.databinding.AdapterLiveBinding;
import java.util.Collections;
import java.util.List; import java.util.List;
public class LiveAdapter extends RecyclerView.Adapter<LiveAdapter.ViewHolder> { public class LiveAdapter extends RecyclerView.Adapter<LiveAdapter.ViewHolder> {
@ -20,6 +21,7 @@ public class LiveAdapter extends RecyclerView.Adapter<LiveAdapter.ViewHolder> {
public LiveAdapter(OnClickListener listener) { public LiveAdapter(OnClickListener listener) {
this.mListener = listener; this.mListener = listener;
this.mItems = LiveConfig.get().getLives(); this.mItems = LiveConfig.get().getLives();
Collections.sort(mItems, new Live.Sorter());
} }
public interface OnClickListener { public interface OnClickListener {

@ -18,8 +18,8 @@ public class HistoryDialog implements ConfigAdapter.OnClickListener {
private final DialogHistoryBinding binding; private final DialogHistoryBinding binding;
private final ConfigCallback callback; private final ConfigCallback callback;
private final ConfigAdapter adapter;
private final AlertDialog dialog; private final AlertDialog dialog;
private ConfigAdapter adapter;
private int type; private int type;
public static HistoryDialog create(Activity activity) { public static HistoryDialog create(Activity activity) {
@ -35,6 +35,7 @@ public class HistoryDialog implements ConfigAdapter.OnClickListener {
this.callback = (ConfigCallback) activity; this.callback = (ConfigCallback) activity;
this.binding = DialogHistoryBinding.inflate(LayoutInflater.from(activity)); this.binding = DialogHistoryBinding.inflate(LayoutInflater.from(activity));
this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create(); this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create();
this.adapter = new ConfigAdapter(this);
} }
public void show() { public void show() {
@ -45,7 +46,7 @@ public class HistoryDialog implements ConfigAdapter.OnClickListener {
private void setRecyclerView() { private void setRecyclerView() {
binding.recycler.setHasFixedSize(true); binding.recycler.setHasFixedSize(true);
binding.recycler.addItemDecoration(new SpaceItemDecoration(1, 16)); binding.recycler.addItemDecoration(new SpaceItemDecoration(1, 16));
binding.recycler.setAdapter(adapter = new ConfigAdapter(this, type)); binding.recycler.setAdapter(adapter.addAll(type));
} }
private void setDialog() { private void setDialog() {

@ -20,7 +20,7 @@ public class LiveDialog implements LiveAdapter.OnClickListener {
private final DialogLiveBinding binding; private final DialogLiveBinding binding;
private final LiveCallback callback; private final LiveCallback callback;
private final AlertDialog dialog; private final AlertDialog dialog;
private LiveAdapter adapter; private final LiveAdapter adapter;
public static LiveDialog create(Activity activity) { public static LiveDialog create(Activity activity) {
return new LiveDialog(activity); return new LiveDialog(activity);
@ -30,18 +30,18 @@ public class LiveDialog implements LiveAdapter.OnClickListener {
this.callback = (LiveCallback) activity; this.callback = (LiveCallback) activity;
this.binding = DialogLiveBinding.inflate(LayoutInflater.from(activity)); this.binding = DialogLiveBinding.inflate(LayoutInflater.from(activity));
this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create(); this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create();
this.adapter = new LiveAdapter(this);
} }
public void show() { public void show() {
if (LiveConfig.get().getLives().isEmpty()) return;
setRecyclerView(); setRecyclerView();
setDialog(); setDialog();
} }
private void setRecyclerView() { private void setRecyclerView() {
binding.recycler.setAdapter(adapter);
binding.recycler.setHasFixedSize(true); binding.recycler.setHasFixedSize(true);
binding.recycler.addItemDecoration(new SpaceItemDecoration(1, 16)); binding.recycler.addItemDecoration(new SpaceItemDecoration(1, 16));
binding.recycler.setAdapter(adapter = new LiveAdapter(this));
binding.recycler.scrollToPosition(LiveConfig.getHomeIndex()); binding.recycler.scrollToPosition(LiveConfig.getHomeIndex());
} }

@ -35,7 +35,6 @@ public class SiteDialog implements SitePresenter.OnClickListener {
} }
public void show() { public void show() {
if (ApiConfig.get().getSites().isEmpty()) return;
setRecyclerView(); setRecyclerView();
setDialog(); setDialog();
} }
@ -48,6 +47,7 @@ public class SiteDialog implements SitePresenter.OnClickListener {
} }
private void setDialog() { private void setDialog() {
if (adapter.size() == 0) return;
WindowManager.LayoutParams params = dialog.getWindow().getAttributes(); WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.width = (int) (ResUtil.getScreenWidthPx() * 0.4f); params.width = (int) (ResUtil.getScreenWidthPx() * 0.4f);
params.height = (int) (ResUtil.getScreenHeightPx() * 0.74f); params.height = (int) (ResUtil.getScreenHeightPx() * 0.74f);

@ -94,7 +94,7 @@ public class LiveConfig {
private void parseTxt(String txt) { private void parseTxt(String txt) {
Live live = new Live(config.getUrl()); Live live = new Live(config.getUrl());
parse(live, txt); parse(live, txt);
lives.add(live); addLive(live);
setHome(live); setHome(live);
} }
@ -108,13 +108,18 @@ public class LiveConfig {
try { try {
if (live.isProxy()) live = new Live(live.getChannels().get(0).getName(), live.getChannels().get(0).getUrls().get(0).split("ext=")[1]); 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.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); if (live.getName().equals(config.getHome())) setHome(live);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
private void addLive(Live live) {
lives.remove(live);
lives.add(live);
}
private String getTxt(String url) throws Exception { private String getTxt(String url) throws Exception {
if (url.startsWith("file")) return FileUtil.read(url); if (url.startsWith("file")) return FileUtil.read(url);
else if (url.startsWith("http")) return OKHttp.newCall(url).execute().body().string(); else if (url.startsWith("http")) return OKHttp.newCall(url).execute().body().string();

@ -1,5 +1,6 @@
package com.fongmi.android.tv.bean; package com.fongmi.android.tv.bean;
import android.net.Uri;
import android.text.TextUtils; import android.text.TextUtils;
import com.google.gson.Gson; import com.google.gson.Gson;
@ -7,6 +8,7 @@ import com.google.gson.JsonElement;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator;
import java.util.List; import java.util.List;
public class Live { public class Live {
@ -40,7 +42,7 @@ public class Live {
} }
public Live(String url) { public Live(String url) {
this.name = url; this.name = Uri.parse(url).getLastPathSegment();
this.url = url; this.url = url;
} }
@ -112,4 +114,12 @@ public class Live {
Live it = (Live) obj; Live it = (Live) obj;
return getName().equals(it.getName()) && getUrl().equals(it.getUrl()); return getName().equals(it.getName()) && getUrl().equals(it.getUrl());
} }
public static class Sorter implements Comparator<Live> {
@Override
public int compare(Live live1, Live live2) {
return Boolean.compare(live2.isActivated(), live1.isActivated());
}
}
} }

Loading…
Cancel
Save