spyglass/src/main/java/com/linkedin/android/spyglass/ui/MentionsEditText.java
private boolean onCursorChanged(final int index) {
        Editable text = getText();
        if (text == null) {
            return false;
        }

        MentionSpan[] allSpans = text.getSpans(0, text.length(), MentionSpan.class);
        for (MentionSpan span : allSpans) {
            // Deselect span if the cursor is not on the span.
            if (span.isSelected() && (index < text.getSpanStart(span) || index > text.getSpanEnd(span))) {
                span.setSelected(false);
                updateSpan(span);
            }
        }

        // Do not allow the user to set the cursor within a span. If the user tries to do so, select
        // move the cursor to the end of it.
        MentionSpan[] currentSpans = text.getSpans(index, index, MentionSpan.class);
        if (currentSpans.length != 0) {
            MentionSpan span = currentSpans[0];
            int start = text.getSpanStart(span);
            int end = text.getSpanEnd(span);
            if (index > start && index < end) {
                super.setSelection(end);
                return true;
            }
        }

        return false;
    }
private boolean onCursorChanged(final int index) {
        Editable text = getText();
        if (text == null) {
            return false;
        }

        MentionSpan[] allSpans = text.getSpans(0, text.length(), MentionSpan.class);
        for (MentionSpan span : allSpans) {
            // Deselect span if the cursor is not on the span.
            if (span.isSelected() && (index < text.getSpanStart(span) || index > text.getSpanEnd(span))) {
                span.setSelected(false);
                updateSpan(span);
            }
        }

        // Do not allow the user to set the cursor within a span. If the user tries to do so, select
        // move the cursor to the end of it.
        MentionSpan[] currentSpans = text.getSpans(index, index, MentionSpan.class);
        if (currentSpans.length != 0) {
            MentionSpan span = currentSpans[0];
            int start = text.getSpanStart(span);
            int end = text.getSpanEnd(span);
            if (index > start && index < end) {
                super.setSelection(end);
                return true;
            }
        }

        return false;
    }
private boolean onCursorChanged ( final int index ) { Editable text = getText ( ) ; if ( text == null ) { return false ; } MentionSpan [ ] allSpans = text . getSpans ( 0 , text . length ( ) , MentionSpan . class ) ; for ( MentionSpan span : allSpans ) { // Deselect span if the cursor is not on the span. if ( span . isSelected ( ) && ( index < text . getSpanStart ( span ) || index > text . getSpanEnd ( span ) ) ) { span . setSelected ( false ) ; updateSpan ( span ) ; } } // Do not allow the user to set the cursor within a span. If the user tries to do so, select // move the cursor to the end of it. MentionSpan [ ] currentSpans = text . getSpans ( index , index , MentionSpan . class ) ; if ( currentSpans . length != 0 ) { MentionSpan span = currentSpans [ 0 ] ; int start = text . getSpanStart ( span ) ; int end = text . getSpanEnd ( span ) ; if ( index > start && index < end ) { super . setSelection ( end ) ; return true ; } } return false ; }
Method to handle the cursor changing positions. Returns true if handled, false if it should
be passed to the super method.

@param index int position of cursor within the text

@return true if handled
Method to handle the cursor changing positions . Returns true if handled false if it should be passed to the super method .