mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-08-03 10:46:53 -04:00
Fix search for titles with special characters
(cherry picked from commit 064de2338c1b891e565433cdf132e8afb02a169f)
This commit is contained in:
parent
0110e24ea3
commit
eab8f9a72a
@ -29,7 +29,6 @@ import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.SearchView;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.text.Html;
|
||||
import android.text.Spanned;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
@ -63,9 +62,10 @@ public class SearchActivity extends BaseActivity
|
||||
public static final String EXTRA_SEARCH_IN_TEXT = "bool_searchintext";
|
||||
|
||||
private final int REQ_CODE_SPEECH_INPUT = 100;
|
||||
private ListView mListView;
|
||||
private AutoCompleteAdapter mAutoAdapter;
|
||||
private ArrayAdapter<String> mDefaultAdapter;
|
||||
private ListView listView;
|
||||
private ArrayAdapter<String> currentAdapter;
|
||||
private AutoCompleteAdapter autoAdapter;
|
||||
private ArrayAdapter<String> defaultAdapter;
|
||||
private SearchView searchView;
|
||||
private String searchText;
|
||||
|
||||
@ -85,14 +85,14 @@ public class SearchActivity extends BaseActivity
|
||||
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);
|
||||
getSupportActionBar().setHomeButtonEnabled(true);
|
||||
searchPresenter.attachView(this);
|
||||
mListView = findViewById(R.id.search_list);
|
||||
mDefaultAdapter = getDefaultAdapter();
|
||||
listView = findViewById(R.id.search_list);
|
||||
defaultAdapter = getDefaultAdapter();
|
||||
searchPresenter.getRecentSearches();
|
||||
mListView.setAdapter(mDefaultAdapter);
|
||||
activateDefaultAdapter();
|
||||
|
||||
mAutoAdapter = new AutoCompleteAdapter(this);
|
||||
mListView.setOnItemClickListener(this);
|
||||
mListView.setOnItemLongClickListener(this);
|
||||
autoAdapter = new AutoCompleteAdapter(this);
|
||||
listView.setOnItemClickListener(this);
|
||||
listView.setOnItemLongClickListener(this);
|
||||
|
||||
boolean IS_VOICE_SEARCH_INTENT = getIntent().getBooleanExtra(EXTRA_IS_WIDGET_VOICE, false);
|
||||
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
|
||||
public void addRecentSearches(List<String> recentSearches) {
|
||||
mDefaultAdapter.addAll(recentSearches);
|
||||
mDefaultAdapter.notifyDataSetChanged();
|
||||
defaultAdapter.addAll(recentSearches);
|
||||
defaultAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -128,8 +138,8 @@ public class SearchActivity extends BaseActivity
|
||||
searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
|
||||
if (searchText != null) {
|
||||
searchView.setQuery(searchText, false);
|
||||
mListView.setAdapter(mAutoAdapter);
|
||||
mAutoAdapter.getFilter().filter(searchText.toLowerCase());
|
||||
activateAutoAdapter();
|
||||
autoAdapter.getFilter().filter(searchText.toLowerCase());
|
||||
}
|
||||
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
|
||||
@Override
|
||||
@ -140,10 +150,10 @@ public class SearchActivity extends BaseActivity
|
||||
@Override
|
||||
public boolean onQueryTextChange(String s) {
|
||||
if (s.equals("")) {
|
||||
mListView.setAdapter(mDefaultAdapter);
|
||||
activateDefaultAdapter();
|
||||
} else {
|
||||
mListView.setAdapter(mAutoAdapter);
|
||||
mAutoAdapter.getFilter().filter(s.toLowerCase());
|
||||
activateAutoAdapter();
|
||||
autoAdapter.getFilter().filter(s.toLowerCase());
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -198,15 +208,7 @@ public class SearchActivity extends BaseActivity
|
||||
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
CharSequence text = ((TextView) view).getText();
|
||||
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();
|
||||
}
|
||||
String title = currentAdapter.getItem(position);
|
||||
searchPresenter.saveSearch(title);
|
||||
sendMessage(title);
|
||||
}
|
||||
@ -242,8 +244,8 @@ public class SearchActivity extends BaseActivity
|
||||
|
||||
@Override
|
||||
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
if (parent.getAdapter() == mDefaultAdapter) {
|
||||
String searched = mListView.getItemAtPosition(position).toString();
|
||||
if (parent.getAdapter() == defaultAdapter) {
|
||||
String searched = listView.getItemAtPosition(position).toString();
|
||||
deleteSpecificSearchDialog(searched);
|
||||
}
|
||||
return true;
|
||||
@ -268,8 +270,8 @@ public class SearchActivity extends BaseActivity
|
||||
}
|
||||
|
||||
private void resetAdapter() {
|
||||
mDefaultAdapter = getDefaultAdapter();
|
||||
mListView.setAdapter(mDefaultAdapter);
|
||||
defaultAdapter = getDefaultAdapter();
|
||||
activateDefaultAdapter();
|
||||
searchPresenter.getRecentSearches();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user