@Override
 public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
   if (listenerExists()) onSearchActionListener.onSearchConfirmed(searchEdit.getText());
   if (suggestionsVisible) animateLastRequests(getListHeight(), 0);
   adapter.addSuggestion(searchEdit.getText().toString());
   return false;
 }
  /** Shows search input and close arrow */
  public void disableSearch() {
    searchEnabled = false;
    Animation out = AnimationUtils.loadAnimation(getContext(), R.anim.fade_out);
    Animation in = AnimationUtils.loadAnimation(getContext(), R.anim.fade_in_right);
    out.setAnimationListener(this);
    searchIcon.setVisibility(VISIBLE);
    inputContainer.startAnimation(out);
    searchIcon.startAnimation(in);

    if (listenerExists()) onSearchActionListener.onSearchStateChanged(false);
    if (suggestionsVisible) animateLastRequests(getListHeight(), 0);
  }
 /** Shows search input and close arrow */
 public void enableSearch() {
   adapter.notifyDataSetChanged();
   searchEnabled = true;
   Animation left_in = AnimationUtils.loadAnimation(getContext(), R.anim.fade_in_left);
   Animation left_out = AnimationUtils.loadAnimation(getContext(), R.anim.fade_out_left);
   left_in.setAnimationListener(this);
   inputContainer.setVisibility(VISIBLE);
   inputContainer.startAnimation(left_in);
   animateLastRequests(0, getListHeight());
   if (listenerExists()) {
     onSearchActionListener.onSearchStateChanged(true);
   }
   searchIcon.startAnimation(left_out);
 }
 @Override
 public void onClick(View v) {
   int id = v.getId();
   final int thisId = getId();
   if (id == getId()) {
     if (!searchEnabled) {
       enableSearch();
     }
   } else if (id == R.id.mt_arrow) {
     disableSearch();
   } else if (id == R.id.requestItem) {
     if (v.getTag() instanceof String) searchEdit.setText(v.getTag().toString());
   } else if (id == R.id.mt_search) {
     if (listenerExists()) onSearchActionListener.onSpeechIconSelected();
   } else if (id == R.id.mt_clear) {
     searchEdit.setText("");
   }
 }