Как настроить прослушиватель интерфейса для обнаружения изменения переменной в Kotlin.Я успешно реализовал следующее в Java, но сталкиваюсь с проблемами, которые делают это в Kotlin:
Интерфейс:
public interface InterfaceRefreshList
{
public void refreshListRequest();
}
Класс, содержащий прослушиватель:
public class SignalChange
{
private static boolean refreshListSwitch;
private static List<InterfaceRefreshList> refreshListListeners = new ArrayList<>();
public static void setRefreshList(boolean value)
{
refreshListSwitch = value;
for(InterfaceRefreshList l : refreshListListeners)
l.refreshListRequest();
}
public static void addRefreshListListener(InterfaceRefreshList l)
{
refreshListListeners.add(l);
}
}
Класс гдеслушатель слушает:
public class FragmentBrowse extends Fragment
{
public FragmentBrowse() /// Constructor
{
SignalChange.addRefreshListListener(() -> refreshList());
}
refreshList()
{
// do something
}
}
Чтобы сообщить об изменении:
SignalChange.setRefreshList(true);
Я могу настроить интерфейс и класс сигнала:
class SignalChange
{
private var refreshListSwitch: Boolean = false
var setSwitch: Boolean
get() = refreshListSwitch
set(value)
{
refreshListSwitch = value
}
private var refreshListListeners = ArrayList<InterfaceRefreshPersonsList>()
fun sendRefreshSignal()
{
for(l in refreshListListeners) l.refreshPersonsList()
}
fun addRefreshListListener(l: InterfaceRefreshPersonsList)
{
refreshListListeners.add(l)
}
}
Но я не могунастроить слушателя в классе FragmentBrowse.Класс фрагмента не допускает конструкторы.