From 12eac5a9659782b4d1d69d8d5afd736a99f31841 Mon Sep 17 00:00:00 2001 From: jhengazuki Date: Sat, 20 Sep 2025 04:54:01 +0800 Subject: [PATCH] Fix bug --- .../tv/ui/adapter/BaseDiffAdapter.java | 6 +++- .../tv/ui/activity/HistoryActivity.java | 3 +- .../android/tv/ui/activity/KeepActivity.java | 3 +- .../android/tv/ui/dialog/CastDialog.java | 4 +-- .../fongmi/android/tv/utils/DLNADevice.java | 36 +++++++++---------- 5 files changed, 26 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/ui/adapter/BaseDiffAdapter.java b/app/src/main/java/com/fongmi/android/tv/ui/adapter/BaseDiffAdapter.java index b60b9b303..4cab16aa9 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/adapter/BaseDiffAdapter.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/adapter/BaseDiffAdapter.java @@ -29,8 +29,12 @@ public abstract class BaseDiffAdapter, VH extends Recycler return differ.getCurrentList(); } + public void setItems(List items, Runnable commitCallback) { + differ.submitList(items, commitCallback); + } + public void setItems(List items) { - differ.submitList(items); + setItems(items, null); } public void addItem(T item) { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/HistoryActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/HistoryActivity.java index 36b27949f..d79c79560 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/HistoryActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/HistoryActivity.java @@ -60,8 +60,7 @@ public class HistoryActivity extends BaseActivity implements HistoryAdapter.OnCl } private void getHistory() { - mAdapter.setItems(History.get()); - mBinding.progressLayout.showContent(true, mAdapter.getItemCount()); + mAdapter.setItems(History.get(), () -> mBinding.progressLayout.showContent(true, mAdapter.getItemCount())); } private void onSync() { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/KeepActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/KeepActivity.java index 876f85777..6b14edbac 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/KeepActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/KeepActivity.java @@ -64,8 +64,7 @@ public class KeepActivity extends BaseActivity implements KeepAdapter.OnClickLis } private void getKeep() { - mAdapter.setItems(Keep.getVod()); - mBinding.progressLayout.showContent(true, mAdapter.getItemCount()); + mAdapter.setItems(Keep.getVod(), () -> mBinding.progressLayout.showContent(true, mAdapter.getItemCount())); } private void onSync() { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/CastDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/CastDialog.java index de3765cda..121e03eee 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/CastDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/CastDialog.java @@ -164,12 +164,12 @@ public class CastDialog extends BaseDialog implements DeviceAdapter.OnClickListe @Override public void onDeviceAdded(@NonNull org.fourthline.cling.model.meta.Device device) { - adapter.addItems(DLNADevice.get().add(device)); + adapter.addItem(DLNADevice.get().add(device)); } @Override public void onDeviceRemoved(@NonNull org.fourthline.cling.model.meta.Device device) { - adapter.remove(DLNADevice.get().remove(device)); + DLNADevice.get().remove(device); } @Override diff --git a/app/src/mobile/java/com/fongmi/android/tv/utils/DLNADevice.java b/app/src/mobile/java/com/fongmi/android/tv/utils/DLNADevice.java index 4594fc647..b46fd950b 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/utils/DLNADevice.java +++ b/app/src/mobile/java/com/fongmi/android/tv/utils/DLNADevice.java @@ -3,48 +3,46 @@ package com.fongmi.android.tv.utils; import com.android.cast.dlna.dmc.DLNACastManager; import com.fongmi.android.tv.bean.Device; -import java.util.ArrayList; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; public class DLNADevice { - private final List> devices; + private final Set> devices; private static class Loader { - static volatile DLNADevice INSTANCE = new DLNADevice(); + static final DLNADevice INSTANCE = new DLNADevice(); } public static DLNADevice get() { return Loader.INSTANCE; } - public DLNADevice() { - this.devices = new ArrayList<>(); + private DLNADevice() { + this.devices = new LinkedHashSet<>(); } - public List getAll() { - List items = new ArrayList<>(); - for (org.fourthline.cling.model.meta.Device item : devices) items.add(Device.get(item)); - return items; + public List getAll() { + return devices.stream().map(Device::get).collect(Collectors.toList()); } - public List add(org.fourthline.cling.model.meta.Device item) { - devices.remove(item); + public Device add(org.fourthline.cling.model.meta.Device item) { devices.add(item); - return getAll(); + return Device.get(item); } - public Device remove(org.fourthline.cling.model.meta.Device device) { - devices.remove(device); - return Device.get(device); + public Device remove(org.fourthline.cling.model.meta.Device item) { + devices.remove(item); + return Device.get(item); } public void disconnect() { - for (org.fourthline.cling.model.meta.Device device : devices) DLNACastManager.INSTANCE.disconnectDevice(device); + devices.forEach(DLNACastManager.INSTANCE::disconnectDevice); } - public org.fourthline.cling.model.meta.Device find(com.fongmi.android.tv.bean.Device item) { - for (org.fourthline.cling.model.meta.Device device : devices) if (device.getIdentity().getUdn().getIdentifierString().equals(item.getUuid())) return device; - return null; + public org.fourthline.cling.model.meta.Device find(Device item) { + return devices.stream().filter(d -> d.getIdentity().getUdn().getIdentifierString().equals(item.getUuid())).findFirst().orElse(null); } }