How to set up a listener for a variable in Kotlin

Samuel

How to I set up an interface listener for detecting a variable change in Kotlin. I successful implemented the following in Java, but am running into issues doing it in Kotlin:

Interface:

public interface InterfaceRefreshList
    {
    public void refreshListRequest();
    }

Class containing listener:

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

Class where listener is listening:

public class FragmentBrowse extends Fragment
{
    public FragmentBrowse() /// Constructor
        {
        SignalChange.addRefreshListListener(() -> refreshList());
        }
    refreshList()
    {
    // do something
    }
}

To signal a change:

SignalChange.setRefreshList(true);

I can set up the interface and the signal class:

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)
    }

}

But I cannot setup the listener in the FragmentBrowse class. The fragment class doesn't allow constructors.

Sergey

You can use built-in Kotlin delegates, for example:

object SignalChange {
    var refreshListListeners = ArrayList<InterfaceRefreshList>()

    // fires off every time value of the property changes
    var property1: String by Delegates.observable("initial value") { property, oldValue, newValue ->
        // do your stuff here
        refreshListListeners.forEach { 
            it.refreshListRequest()
        }
    }
}

interface InterfaceRefreshList {
    fun refreshListRequest()
}

Add listeners like this:

SignalChange.refreshListListeners.add(object : InterfaceRefreshList {
    override fun refreshListRequest() {
        refreshList()
    }
})

OR

Intead of interface you can use lambda:

object SignalChange {
    var refreshListListeners = ArrayList<() -> Unit>()

    // fires off every time value of the property changes
    var property1: String by Delegates.observable("initial value") { property, oldValue, newValue ->
        // do your stuff here
        refreshListListeners.forEach {
            it()
        }
    }
}

And to add listener just call:

SignalChange.refreshListListeners.add(::refreshList)
//or
SignalChange.refreshListListeners.add { refreshList() }

fun refreshList() {

}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

How to set up an event listener and remove it after first fired event using react hooks?

分類Dev

How can I set up an environment variable to work with TCC?

分類Dev

Why is this environment variable not set up?

分類Dev

Batch: Set one directory up path in variable

分類Dev

How do i set up a bearer token in postman from an environment variable?

分類Dev

How to set up a variable length array for a prime-sieve algorithm in C?

分類Dev

Kotlin - How to set connection timeout with OkHttp Kotlin

分類Dev

How to set up locale in RSPEC

分類Dev

How to set up timewarrior holidays

分類Dev

How to set up USB for Virtualbox?

分類Dev

How to read an environment variable in Kotlin?

分類Dev

How to read an environment variable in Kotlin?

分類Dev

How to read an environment variable in Kotlin?

分類Dev

How to set a variable

分類Dev

How to set databaseInstanceName in Database Trace Listener from C# code?

分類Dev

How do you set a Menu item listener (onMenuItemSelected) in a FragmentPagerAdapter?

分類Dev

Android Custom View: How to set click listener on individual widgets

分類Dev

Angular - Set up a path variable that changes per page

分類Dev

Set button listener in dialog

分類Dev

A listener for changing variable in android

分類Dev

How to set environment variable with heroku?

分類Dev

How to set variable JSON key

分類Dev

how to set localstorage variable into a function

分類Dev

How to set a structured variable with an expression

分類Dev

How to see if something( a variable ) is set?

分類Dev

How do I set up PreAuthenticationAuthenticationProvider?

分類Dev

How do I set up PreAuthenticationAuthenticationProvider?

分類Dev

How to set up an user defined type in Sqlalchemy

分類Dev

How to set up git over http?

Related 関連記事

  1. 1

    How to set up an event listener and remove it after first fired event using react hooks?

  2. 2

    How can I set up an environment variable to work with TCC?

  3. 3

    Why is this environment variable not set up?

  4. 4

    Batch: Set one directory up path in variable

  5. 5

    How do i set up a bearer token in postman from an environment variable?

  6. 6

    How to set up a variable length array for a prime-sieve algorithm in C?

  7. 7

    Kotlin - How to set connection timeout with OkHttp Kotlin

  8. 8

    How to set up locale in RSPEC

  9. 9

    How to set up timewarrior holidays

  10. 10

    How to set up USB for Virtualbox?

  11. 11

    How to read an environment variable in Kotlin?

  12. 12

    How to read an environment variable in Kotlin?

  13. 13

    How to read an environment variable in Kotlin?

  14. 14

    How to set a variable

  15. 15

    How to set databaseInstanceName in Database Trace Listener from C# code?

  16. 16

    How do you set a Menu item listener (onMenuItemSelected) in a FragmentPagerAdapter?

  17. 17

    Android Custom View: How to set click listener on individual widgets

  18. 18

    Angular - Set up a path variable that changes per page

  19. 19

    Set button listener in dialog

  20. 20

    A listener for changing variable in android

  21. 21

    How to set environment variable with heroku?

  22. 22

    How to set variable JSON key

  23. 23

    how to set localstorage variable into a function

  24. 24

    How to set a structured variable with an expression

  25. 25

    How to see if something( a variable ) is set?

  26. 26

    How do I set up PreAuthenticationAuthenticationProvider?

  27. 27

    How do I set up PreAuthenticationAuthenticationProvider?

  28. 28

    How to set up an user defined type in Sqlalchemy

  29. 29

    How to set up git over http?

ホットタグ

アーカイブ