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> {
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.mItems = Config.getAll(type);
}
public interface OnClickListener {
@ -28,6 +27,11 @@ public class ConfigAdapter extends RecyclerView.Adapter<ConfigAdapter.ViewHolder
void onDeleteClick(Config item);
}
public ConfigAdapter addAll(int type) {
this.mItems = Config.getAll(type);
return this;
}
public int remove(Config item) {
item.delete();
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.databinding.AdapterLiveBinding;
import java.util.Collections;
import java.util.List;
public class LiveAdapter extends RecyclerView.Adapter<LiveAdapter.ViewHolder> {
@ -20,6 +21,7 @@ public class LiveAdapter extends RecyclerView.Adapter<LiveAdapter.ViewHolder> {
public LiveAdapter(OnClickListener listener) {
this.mListener = listener;
this.mItems = LiveConfig.get().getLives();
Collections.sort(mItems, new Live.Sorter());
}
public interface OnClickListener {

@ -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() {

@ -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());
}

@ -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);

@ -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();

@ -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<Live> {
@Override
public int compare(Live live1, Live live2) {
return Boolean.compare(live2.isActivated(), live1.isActivated());
}
}
}

Loading…
Cancel
Save