diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Result.java b/app/src/main/java/com/fongmi/android/tv/bean/Result.java index bbf8ec130..28d47fd86 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Result.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Result.java @@ -232,7 +232,7 @@ public class Result implements Parcelable { } public List getDanmaku() { - return !Setting.isDanmakuLoad() || danmaku == null ? new ArrayList<>() : new ArrayList<>(danmaku); + return !Setting.isDanmakuLoad() || danmaku == null ? new ArrayList<>() : danmaku; } public String getFormat() { diff --git a/app/src/main/java/com/fongmi/android/tv/gson/DanmakuAdapter.java b/app/src/main/java/com/fongmi/android/tv/gson/DanmakuAdapter.java index 7448bcf59..52dbde6de 100644 --- a/app/src/main/java/com/fongmi/android/tv/gson/DanmakuAdapter.java +++ b/app/src/main/java/com/fongmi/android/tv/gson/DanmakuAdapter.java @@ -9,15 +9,19 @@ import com.google.gson.JsonElement; import com.google.gson.JsonParseException; import java.lang.reflect.Type; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; public class DanmakuAdapter implements JsonDeserializer> { @Override public List deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { - if (!json.isJsonPrimitive()) return App.gson().fromJson(json, typeOfT); - String text = json.getAsString().trim(); - if (Json.isArray(text)) return App.gson().fromJson(text, typeOfT); - else return List.of(Danmaku.from(text)); + List items = json.isJsonPrimitive() ? parsePrimitive(json.getAsString().trim(), typeOfT) : App.gson().fromJson(json, typeOfT); + return items.stream().filter(d -> !d.isEmpty()).collect(Collectors.toCollection(ArrayList::new)); + } + + private List parsePrimitive(String text, Type type) { + return Json.isArray(text) ? App.gson().fromJson(text, type) : List.of(Danmaku.from(text)); } }