title: How to stop toast & alertDialog losing focus on my EditText filter
body: <p><strong>UPDATE:</strong></p>
  
  <p><strong>latest update - getChanges() method has been added.</strong></p>
  
  <p>second update - I have added the whole of my ShoppingList.java class.</p>
  
  <p>first update - After 2 people liking the question but no answers, I have opened up a bounty for this question.</p>
  
  <p><strong>Question:</strong></p>
  
  <p>I have had similar issues to this where I am unable to to re-filter my ListView once I start a new intent and then return back to the original page. This was solved with the use of an overiding the onResume() method and recalling my filter code from another filter method.</p>
  
  <p>The latest issue Im having is should a dialogBuilder or a toast message be used on my app page, then once again the filter text is blanked i.e any text entered into my filter EditText is ignored by my filter.</p>
  
  <p>Here are some screenshots to highlight the issue:</p>
  
  <p>Loaded ListView of the items:</p>
  
  <p><img src="https://i.stack.imgur.com/bzmbL.jpg" alt="enter image description here"></p>
  
  <p>A search term is entered into the filter EditText and filter correctly:</p>
  
  <p><img src="https://i.stack.imgur.com/stza9.jpg" alt="enter image description here"></p>
  
  <p>The first item 'A' is edited to 'AB'. The toast message confirms the action:</p>
  
  <p><img src="https://i.stack.imgur.com/JtJAl.jpg" alt="enter image description here"></p>
  
  <p><strong>This is the issue, the dialogbuilder(which is how the item is edited) and toast message are complete, a new filter term is entered into the EditText and the filter no longer filters:</strong></p>
  
  <p><img src="https://i.stack.imgur.com/KAbHw.jpg" alt="enter image description here"></p>
  
  <p>Here is my filter code:</p>
  
  <pre><code>package com.example.flybaseapp;
  
  
  
      public class ShoppingList extends ListActivity implements OnClickListener {
  
  Button AddItem;
  Button showShop;
  ListView showItems;
  SimpleCursorAdapter cursorAdapter;
  Long itemId;
  TextView totalPrice;
  String itemDescription;
  int itemAmount;
  int itemPrice;
  EditText itemNameEdit;
  DBHandlerShop getCons;
  Dialog e1;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  
      setContentView(R.layout.shoppinglistlayout);
  
      AddItem = (Button) findViewById(R.id.btnAddItem);
      showShop = (Button) findViewById(R.id.btnSearchShops);
  
      showItems = (ListView) findViewById(android.R.id.list);
  
      totalPrice = (TextView) findViewById(R.id.totalListPrice);
  
      AddItem.setOnClickListener(this);
      showShop.setOnClickListener(this);
  
      setList();
  
      int setPrice = updateTotal();
      totalPrice.setText(Integer.toString(setPrice));
  
      itemNameEdit = (EditText) findViewById(R.id.inputItemName);
  
      showItems.setTextFilterEnabled(true);
  
      itemNameEdit.addTextChangedListener(new TextWatcher() {
  
          @Override
          public void afterTextChanged(Editable s) {
  
          }
  
          @Override
          public void beforeTextChanged(CharSequence s, int start, int count,
                  int after) {
  
          }
  
          @Override
          public void onTextChanged(CharSequence s, int start, int before,
                  int count) {
  
              cursorAdapter.getFilter().filter(s.toString());
              showItems.refreshDrawableState();
  
          }
  
      });
  
      getCons = new DBHandlerShop(this, null, null);
      getCons.open();
      cursorAdapter.setFilterQueryProvider(new FilterQueryProvider() {
  
          public Cursor runQuery(CharSequence constraint) {
  
              return getCons.getChanges((constraint.toString()));
  
          }
  
      });
  
      showItems.setAdapter(cursorAdapter);
  
  }
  
  @Override
  public void onClick(View clickedAdd) {
  
      switch (clickedAdd.getId()) {
  
      case (R.id.btnAddItem):
  
          show();
  
          break;
  
      case (R.id.btnSearchShops):
  
          Intent checkGPS = new Intent("com.example.flybaseapp.CheckGPS");
          startActivity(checkGPS);
  
          break;
  
      }
  
  }
  
  @Override
  protected void onListItemClick(ListView l, View v, int position, long idd) {
      super.onListItemClick(l, v, position, idd);
  
      itemId = idd;
  
      final CharSequence[] items = { "Edit Item", "Delete Item" };
  
      Builder alertDialogBuilder = new AlertDialog.Builder(ShoppingList.this);
  
      alertDialogBuilder.setTitle("Item Options:");
  
      alertDialogBuilder.setItems(items,
              new DialogInterface.OnClickListener() {
  
                  public void onClick(DialogInterface dialog, int item) {
  
                      if (items[item].equals("Edit Item")) {
  
                          AlertDialog.Builder builder = new AlertDialog.Builder(
                                  ShoppingList.this);
  
                          builder.setTitle("Edit Item");
  
                          DBHandlerShop setEdit = new DBHandlerShop(
                                  ShoppingList.this, null, null);
  
                          setEdit.open();
                          String itemName = setEdit.getItem(itemId);
                          int itemAmount = setEdit.getItemQuan(itemId);
                          int itemPrice = setEdit.getItemCost(itemId);
                          setEdit.close();
  
                          LinearLayout layout = new LinearLayout(
                                  ShoppingList.this);
                          layout.setOrientation(LinearLayout.VERTICAL);
  
                          final EditText titleBox = new EditText(
                                  ShoppingList.this);
                          titleBox.setText(itemName);
                          titleBox.setHint("Item Name:");
                          layout.addView(titleBox);
  
                          final EditText quantityBox = new EditText(
                                  ShoppingList.this);
                          quantityBox.setText(Integer.toString(itemAmount));
                          quantityBox.setHint("Item Quantity");
                          layout.addView(quantityBox);
  
                          final EditText priceBox = new EditText(
                                  ShoppingList.this);
                          priceBox.setText(Integer.toString(itemPrice));
                          priceBox.setHint("Item Price.");
                          layout.addView(priceBox);
  
                          builder.setView(layout);
  
                          builder.setPositiveButton("Ok",
                                  new DialogInterface.OnClickListener() {
                                      public void onClick(
                                              DialogInterface dialog,
                                              int whichButton) {
  
                                          Editable valueItem = titleBox
                                                  .getText();
                                          Editable valueAmount = quantityBox
                                                  .getText();
                                          Editable valuePrice = priceBox
                                                  .getText();
  
                                          String itemDescription = valueItem
                                                  .toString();
                                          String s = valueAmount.toString();
                                          int itemAmount = Integer
                                                  .parseInt(s);
                                          String a = valuePrice.toString();
                                          int itemPrice = Integer.parseInt(a);
  
                                          try {
                                              DBHandlerShop update = new DBHandlerShop(
                                                      ShoppingList.this,
                                                      null, null);
  
                                              int totalCombined = itemAmount
                                                      * itemPrice;
  
                                              update.open();
                                              update.updateItem(itemId,
                                                      itemDescription,
                                                      itemAmount, itemPrice);
                                              update.close();
  
                                              int setPrice = updateTotal();
                                              totalPrice.setText(Integer
                                                      .toString(setPrice));
  
                                          } catch (Exception e) {
  
                                              Toast.makeText(
                                                      getApplicationContext(),
                                                      "Items not updated.",
                                                      Toast.LENGTH_SHORT)
                                                      .show();
  
                                          } finally {
  
                                              Toast.makeText(
                                                      getApplicationContext(),
                                                      "Items updated.",
                                                      Toast.LENGTH_SHORT)
                                                      .show();
  
                                              setList();
  
                                          }
  
                                      }
  
                                  });
  
                          builder.setNegativeButton("Cancel",
                                  new DialogInterface.OnClickListener() {
                                      public void onClick(
                                              DialogInterface dialog,
                                              int whichButton) {
  
                                      }
                                  });
  
                          builder.show();
  
                      }
  
                      else if (items[item].equals("Delete Item")) {
                          try {
  
                              DBHandlerShop delete = new DBHandlerShop(
                                      ShoppingList.this, null, null);
  
                              delete.open();
                              delete.deleteItem(itemId);
                              delete.close();
  
                              DBHandlerShop findPrice = new DBHandlerShop(
                                      ShoppingList.this, null, null);
  
                              findPrice.open();
                              int returnedCost = findPrice
                                      .getItemCost(itemId);
                              findPrice.close();
  
                              int cost = updateTotal();
  
                              int newTotal = cost - returnedCost;
                              totalPrice.setText(Integer.toString(newTotal));
                          }
  
                          catch (Exception e) {
  
                              Toast.makeText(getApplicationContext(),
                                      "Item failed to be deleted.",
                                      Toast.LENGTH_SHORT).show();
                          }
  
                          finally {
  
                              Toast.makeText(getApplicationContext(),
                                      "Item deleted from the list.",
                                      Toast.LENGTH_SHORT).show();
  
                              setList();
                          }
  
                      }
  
                  }
  
              });
  
      alertDialogBuilder.show();
  
  }
  
  @SuppressWarnings("deprecation")
  private void setList() {
  
      DBHandlerShop DBShop = new DBHandlerShop(this, null, null);
  
      DBHandlerShop searchItems = new DBHandlerShop(this, null, null);
  
      searchItems.open();
  
      Cursor cursor = searchItems.getItems();
  
      startManagingCursor(cursor);
  
      searchItems.close();
  
      String[] from = new String[] { DBShop.KEY_ITEMSHOP, DBShop.KEY_ITEMNUM,
              DBShop.KEY_ITEMPRICE };
      int[] to = new int[] { R.id.txtSetItem, R.id.txtSetAmount,
              R.id.txtSetPrice };
  
      cursorAdapter = new SimpleCursorAdapter(this, R.layout.setshoppinglist,
              cursor, from, to);
      showItems.setAdapter(cursorAdapter);
  
  }
  
  private int updateTotal() {
  
      DBHandlerShop total = new DBHandlerShop(this, null, null);
  
      int totalPrice = 0;
      total.open();
      Cursor totalPrices = total.getTotals();
      total.close();
  
      if (totalPrices != null) {
  
          startManagingCursor(totalPrices);
          if (totalPrices.moveToFirst()) {
  
              do {
                  int cost = totalPrices.getInt(3);
                  int amount = totalPrices.getInt(2);
  
                  int totalCost = cost * amount;
                  totalPrice += totalCost;
  
              } while (totalPrices.moveToNext());
  
              return totalPrice;
          }
  
      }
  
      else {
  
          return totalPrice;
  
      }
  
      return 0;
  
  }
  
  private void show() {
  
      AlertDialog.Builder builder = new AlertDialog.Builder(ShoppingList.this);
  
      builder.setTitle("Enter Item Details:");
  
      LinearLayout layout = new LinearLayout(this);
      layout.setOrientation(LinearLayout.VERTICAL);
  
      final EditText titleBox = new EditText(this);
  
      titleBox.setHint("Item Name:");
      layout.addView(titleBox);
  
      final EditText quantityBox = new EditText(this);
  
      quantityBox.setHint("Item Quantity");
      layout.addView(quantityBox);
  
      final EditText priceBox = new EditText(this);
  
      priceBox.setHint("Item Price.");
      layout.addView(priceBox);
  
      builder.setView(layout);
  
      builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int whichButton) {
              try {
  
                  Editable valueItem = titleBox.getText();
                  Editable valueAmount = quantityBox.getText();
                  Editable valuePrice = priceBox.getText();
  
                  itemDescription = valueItem.toString();
                  String s = valueAmount.toString();
                  itemAmount = Integer.parseInt(s);
                  String a = valuePrice.toString();
                  itemPrice = Integer.parseInt(a);
  
                  DBHandlerShop addItem = new DBHandlerShop(
                          ShoppingList.this, null, null);
                  addItem.open();
                  addItem.insertItems(itemDescription, itemAmount, itemPrice);
                  addItem.close();
  
              } catch (Exception e) {
  
                  Toast.makeText(getApplicationContext(),
                          "Item failed to be added", Toast.LENGTH_SHORT)
                          .show();
  
              } finally {
  
                  Toast.makeText(getApplicationContext(),
                          "Item added to your list", Toast.LENGTH_SHORT)
                          .show();
  
                  int cost = updateTotal();
                  totalPrice.setText(Integer.toString(cost));
  
                  setList();
  
              }
  
          }
  
      });
  
      builder.setNegativeButton("Cancel",
              new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int whichButton) {
  
                  }
              });
  
      builder.show();
  
  }
  
  @Override
  protected void onResume() {
      super.onResume();
  
      setList();
  
      showItems.setTextFilterEnabled(true);
  
      itemNameEdit.addTextChangedListener(new TextWatcher() {
  
          @Override
          public void afterTextChanged(Editable s) {
  
          }
  
          @Override
          public void beforeTextChanged(CharSequence s, int start, int count,
                  int after) {
  
          }
  
          @Override
          public void onTextChanged(CharSequence s, int start, int before,
                  int count) {
  
              cursorAdapter.getFilter().filter(s.toString());
              showItems.refreshDrawableState();
  
          }
  
      });
  
      getCons = new DBHandlerShop(this, null, null);
      getCons.open();
      cursorAdapter.setFilterQueryProvider(new FilterQueryProvider() {
  
          public Cursor runQuery(CharSequence constraint) {
  
              return getCons.getChanges((constraint.toString()));
  
          }
  
      });
  
      showItems.setAdapter(cursorAdapter);
  }
  
  }
  </code></pre>
  
  <p>getChanges() from the Database Handler class:</p>
  
  <pre><code>public Cursor getChanges(String constraintPassed) {
  
          String [] columns = new String[]{KEY_ROWSHOPID, KEY_ITEMSHOP, KEY_ITEMNUM, KEY_ITEMPRICE};
          Cursor c = null;
           if(constraintPassed.equals(""))
           {
               c = ourDatabase.query(DATABASE_TABLESHOP, columns, null, null, null, null, null);
  
           }
  
           else
           {
              c = ourDatabase.query(DATABASE_TABLESHOP, columns, KEY_ITEMSHOP + " LIKE'" + constraintPassed + "%'", null, null, null, KEY_ITEMSHOP + " ASC", null);
           }
  
          if( c != null)
              {
                  c.moveToFirst();
  
              }
          return c;
      }
  </code></pre>
  
  <p>Do I need to implement a life-cycle method once the edit has been made? If so could someone push me in the right direction of which is needed as I have tried onResume() and onRestart() to no avail.</p>