Even after some time trying to read and understand the topics already posted here, I am still confused on how to create events in Java.
Assuming that I have this class in C#:
public class HighlightsObjectHandler {
    // Constants
    private const String
        JsonKeysHighlightsHolder = "Items",
        JsonKeysHighlightUrl = "Url",
        JsonKeysHighlightTranslationsHolder = "Traducoes",
        JsonKeysHighlightTranslationLanguage = "Idioma",
        JsonKeysHighlightTranslationText = "Titulo",
        JsonKeysHighlightTranslationImage = "Imagem";
    // Handlers
    public event EventHandler HighlightsJsonChanged;
    public event EventHandler HighlightsContentChanging;
    public event EventHandler HighlightsContentChanged;
    // Variables
    private String
        _json;
    // Properties
    public String HighlightsJson {
        get {
            return _json;
        }
        set {
            if (value != _json && value != null) {
                _json = value;
                OnHighlightsJsonChanged( EventArgs.Empty );
                ParseJson();
            }
        }
    }
    public Boolean HighlightsUpdating { get; private set; }
    public List<HighlightObject> Highlights { get; private set; }
    // Methods
    private void ParseJson() {
        JsonObject
            jsonObject;
        if (JsonObject.TryParse( HighlightsJson, out jsonObject )) {
            OnHighlightsContentChanging( EventArgs.Empty );
            // Json parsing and other stuff...
            // ... it shouldn't matter for this question.
            OnHighlightsContentChanged( EventArgs.Empty );
        }
    }
    // Events
    internal void OnHighlightsJsonChanged( EventArgs eventArgs ) {
        if (HighlightsJsonChanged != null) {
            HighlightsJsonChanged( this, eventArgs );
        }
    }
    internal void OnHighlightsContentChanging( EventArgs eventArgs ) {
        HighlightsUpdating = true;
        if (HighlightsContentChanging != null) {
            HighlightsContentChanging( this, eventArgs );
        }
    }
    internal void OnHighlightsContentChanged( EventArgs eventArgs ) {
        HighlightsUpdating = false;
        if (HighlightsContentChanged != null) {
            HighlightsContentChanged( this, eventArgs );
        }
    }
    // Constructors
    public HighlightsObjectHandler() {
        Highlights = new List<HighlightObject>();
    }
}
How would I make a copy of this in Java?
I somewhat understand that I need to create an interface that would hold the 3 EventHandlers that I have in this code. Then, I would have to implement that interface in the class. Let's assume that the class would have the exact same name and the result would be something like this:
    public class HighlightsObjectHandler implements SomeListener { ... }
But, from what I see from tutorials and forums, they would fire, for instance, the HighlightsContentChanging directly instead of calling the OnHighlightsContentChanging ( where I would like to set a variable - HighlightsUpdating - to a value and then calling the listeners associated with the event ).
And there is where I'm losing my mind. How would I make this happen? In the Windows Phone app, that variable would help me whenever a page that had this content in it to set the page as loading or to display a message if the page has nothing to show.
UPDATE:
I've managed to create the code I as able to, or had acknowledge to. I'll leave here the code so far:
package com.example.nlsonmartins.myapplication.Highlights;
import java.util.ArrayList;
import org.json.*;
public class HighlightsObjectHandler {
    // Constants
    private final String
              JsonKeysHighlightsHolder = "Items",
              JsonKeysHighlightUrl = "Url",
              JsonKeysHighlightTranslationsHolder = "Traducoes",
              JsonKeysHighlightTranslationLanguage = "Idioma",
              JsonKeysHighlightTranslationText = "Titulo",
              JsonKeysHighlightTranslationImage = "Imagem";
    // Enumerators
    // Handlers
    // Variables
    private String
              _json;
    private Boolean
              _updating;
    private ArrayList<HighlightObject>
              _highlights;
    // Properties
    public String HighlightsJson() {
        return _json;
    }
    public void HighlightsJson(String highlightsJson) {
        // Validate the json. This cannot be null nor equal to the present one ( to prevent firing events on the same data )
        if(highlightsJson != _json && highlightsJson != null) {
            _json = highlightsJson;
            // Fire the Java equivalent of C# 'OnHighlightsJsonChanged( EventArgs.Empty );'
            ParseJson();
        }
    }
    public Boolean HighlightsUpdating() {
        return _updating;
    }
    private void HighlightsUpdating(Boolean isUpdating) {
        _updating = isUpdating;
    }
    public ArrayList<HighlightObject> Highlights() {
        return _highlights;
    }
    // Methods
    private void ParseJson() {
        try {
            JSONObject
                      jsonObject = new JSONObject(HighlightsJson());
            // Fire the Java equivalent of C# 'OnHighlightsContentsChanging( EventArgs.Empty );'
            // Parse the JSON object
            // Fire the Java equivalent of C# 'OnHighlightsContentsChanged( EventArgs.Empty );'
        } catch (JSONException exception) {
        }
    }
    // Events
    /* Create the event handler for 'OnHighlightsJsonChanged' */
    /* Create the event handler for 'OnHighlightsContentsChanging' and call the 'HighlightsUpdating(true);' method  */
    /* Create the event handler for 'OnHighlightsContentsChanged' and call the 'HighlightsUpdating(false);' method  */
    // Constructors
    public HighlightsObjectHandler() {
        _highlights = new ArrayList<HighlightObject>();
    }
}
 
     
     
    