mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-11 08:27:50 -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.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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user