Fix search for titles with special characters

(cherry picked from commit 064de2338c1b891e565433cdf132e8afb02a169f)
This commit is contained in:
mhutti1 2018-06-20 20:54:22 +01:00 committed by Abdul Wadood
parent 0110e24ea3
commit eab8f9a72a

View File

@ -29,7 +29,6 @@ import android.support.v7.app.AlertDialog;
import android.support.v7.widget.SearchView; import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.text.Html; import android.text.Html;
import android.text.Spanned;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
@ -63,9 +62,10 @@ public class SearchActivity extends BaseActivity
public static final String EXTRA_SEARCH_IN_TEXT = "bool_searchintext"; public static final String EXTRA_SEARCH_IN_TEXT = "bool_searchintext";
private final int REQ_CODE_SPEECH_INPUT = 100; private final int REQ_CODE_SPEECH_INPUT = 100;
private ListView mListView; private ListView listView;
private AutoCompleteAdapter mAutoAdapter; private ArrayAdapter<String> currentAdapter;
private ArrayAdapter<String> mDefaultAdapter; private AutoCompleteAdapter autoAdapter;
private ArrayAdapter<String> defaultAdapter;
private SearchView searchView; private SearchView searchView;
private String searchText; private String searchText;
@ -85,14 +85,14 @@ public class SearchActivity extends BaseActivity
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back); getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);
getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setHomeButtonEnabled(true);
searchPresenter.attachView(this); searchPresenter.attachView(this);
mListView = findViewById(R.id.search_list); listView = findViewById(R.id.search_list);
mDefaultAdapter = getDefaultAdapter(); defaultAdapter = getDefaultAdapter();
searchPresenter.getRecentSearches(); searchPresenter.getRecentSearches();
mListView.setAdapter(mDefaultAdapter); activateDefaultAdapter();
mAutoAdapter = new AutoCompleteAdapter(this); autoAdapter = new AutoCompleteAdapter(this);
mListView.setOnItemClickListener(this); listView.setOnItemClickListener(this);
mListView.setOnItemLongClickListener(this); listView.setOnItemLongClickListener(this);
boolean IS_VOICE_SEARCH_INTENT = getIntent().getBooleanExtra(EXTRA_IS_WIDGET_VOICE, false); boolean IS_VOICE_SEARCH_INTENT = getIntent().getBooleanExtra(EXTRA_IS_WIDGET_VOICE, false);
if (IS_VOICE_SEARCH_INTENT) { if (IS_VOICE_SEARCH_INTENT) {
@ -100,10 +100,20 @@ public class SearchActivity extends BaseActivity
} }
} }
public void activateDefaultAdapter() {
currentAdapter = defaultAdapter;
listView.setAdapter(currentAdapter);
}
public void activateAutoAdapter() {
currentAdapter = autoAdapter;
listView.setAdapter(currentAdapter);
}
@Override @Override
public void addRecentSearches(List<String> recentSearches) { public void addRecentSearches(List<String> recentSearches) {
mDefaultAdapter.addAll(recentSearches); defaultAdapter.addAll(recentSearches);
mDefaultAdapter.notifyDataSetChanged(); defaultAdapter.notifyDataSetChanged();
} }
@Override @Override
@ -128,8 +138,8 @@ public class SearchActivity extends BaseActivity
searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
if (searchText != null) { if (searchText != null) {
searchView.setQuery(searchText, false); searchView.setQuery(searchText, false);
mListView.setAdapter(mAutoAdapter); activateAutoAdapter();
mAutoAdapter.getFilter().filter(searchText.toLowerCase()); autoAdapter.getFilter().filter(searchText.toLowerCase());
} }
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override @Override
@ -140,10 +150,10 @@ public class SearchActivity extends BaseActivity
@Override @Override
public boolean onQueryTextChange(String s) { public boolean onQueryTextChange(String s) {
if (s.equals("")) { if (s.equals("")) {
mListView.setAdapter(mDefaultAdapter); activateDefaultAdapter();
} else { } else {
mListView.setAdapter(mAutoAdapter); activateAutoAdapter();
mAutoAdapter.getFilter().filter(s.toLowerCase()); autoAdapter.getFilter().filter(s.toLowerCase());
} }
return true; return true;
@ -198,15 +208,7 @@ public class SearchActivity extends BaseActivity
@Override @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CharSequence text = ((TextView) view).getText(); String title = currentAdapter.getItem(position);
String title;
if (text instanceof Spanned) {
title = Html.toHtml((Spanned) text);
// To remove the "ltr style information" from spanned text
title = title.substring(title.indexOf(">") + 1, title.lastIndexOf("<"));
} else {
title = text.toString();
}
searchPresenter.saveSearch(title); searchPresenter.saveSearch(title);
sendMessage(title); sendMessage(title);
} }
@ -242,8 +244,8 @@ public class SearchActivity extends BaseActivity
@Override @Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
if (parent.getAdapter() == mDefaultAdapter) { if (parent.getAdapter() == defaultAdapter) {
String searched = mListView.getItemAtPosition(position).toString(); String searched = listView.getItemAtPosition(position).toString();
deleteSpecificSearchDialog(searched); deleteSpecificSearchDialog(searched);
} }
return true; return true;
@ -268,8 +270,8 @@ public class SearchActivity extends BaseActivity
} }
private void resetAdapter() { private void resetAdapter() {
mDefaultAdapter = getDefaultAdapter(); defaultAdapter = getDefaultAdapter();
mListView.setAdapter(mDefaultAdapter); activateDefaultAdapter();
searchPresenter.getRecentSearches(); searchPresenter.getRecentSearches();
} }