title: Detect changes in EditText (TextWatcher ineffective)
body: <p>I need to detect text changes in an EditText. I've tried TextWatcher, but it doesn't work in a way I would expect it to. Take the onTextChanged method:</p>
  
  <p><code>public void onTextChanged( CharSequence s, int start, int before, int count )</code></p>
  
  <p>Say I have the text "John" in already in the EditText. If press another key, "e", <code>s</code> will be "Johne", <code>start</code> will be 0, <code>before</code> will be 4, and <code>count</code> will be 5. The way I would expect this method to work would be the difference between what the EditText previously was, and what it's about to become.</p>
  
  <p>So I would expect:</p>
  
  <pre><code>s = "Johne"
  start = 4 // inserting character at index = 4
  before = 0 // adding a character, so there was nothing there before
  count = 1 // inserting one character
  </code></pre>
  
  <p>I need to be able to detect individual changes every time a key is pressed. So if I have text "John", I need to know "e" was added at index 4. If I backspace "e", I need to know "e" was removed from index 4. If I put the cursor after "J" and backspace, I need to know "J" was removed from index 0. If I put a "G" where "J" was, I want to know "G" replaced "J" at index 0.</p>
  
  <p>How can I achieve this? I can't think of a reliable way to do this.</p>