Intereting Posts
Как сделать масштабируемое прокрутку? В Java, что происходит, когда у вас есть метод с неопределенным ключевым словом? Невозможно возобновить работу в случайном порядке Создание android – как загрузить изображение ядра в команде mkbootimg? Почему для Samsung S3 начать играть на некоторых интернет-потоках? WebSockets для Android и приложений для iOS Android – javah не находит мой класс Как исправить IncompatibleClassChangeError во время Android Jackson Parsing, используя аннотации в Android Lollipop? Как использовать разные версии одной и той же зависимости от градиента в разных модулях Android Studio? Как показать пользовательскую страницу «веб-страница недоступна» в Android WebView? Пытается отправить намерение другому приложению: error SecurityException: отказ от разрешения: начало выполнения SurfaceView отстает, если в ScrollView Одиночный выбор в RecyclerView Неопределенная эталонная ошибка – rand Как масштабировать видео на SurfaceView больше, чем на Android?

Выделите искомый текст в элементах ListView

Введите описание изображения здесь

У меня есть ListView и я использую пользовательский адаптер для отображения данных. Теперь я хочу изменить цвет текста в обычном тексте, как показано выше.

Вот код для SearchView

 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.actionbar_menu_item, menu); SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); final SearchView searchView = (SearchView) menu.findItem(R.id.action_search) .getActionView(); searchView.setSearchableInfo(searchManager .getSearchableInfo(getComponentName())); searchView.setOnQueryTextListener(this); return super.onCreateOptionsMenu(menu); } public boolean onQueryTextChange(String newText) { // this is adapter that will be filtered if (TextUtils.isEmpty(newText)){ lvCustomList.clearTextFilter(); } else{ lvCustomList.setFilterText(newText.toString()); } return false; } @Override public boolean onQueryTextSubmit(String query) { return false; } 

Спасибо.

Я предполагаю, что у вас есть пользовательский адаптер с getCount() и getView() реализованный и уже фильтрующий элементы, и вам просто нужна полужирная часть.

Для этого вам нужно использовать SpannableString , который в основном содержит текст с прикрепленной разметкой. Например, TextAppearanceSpan можно использовать для изменения шрифта, стиля шрифта, размера и цвета.

Итак, вы должны обновить getView() для вашего адаптера, чтобы изменить часть, в которой вы используете textView.setText() во что-то более или менее:

 String filter = ...; String itemValue = ...; int startPos = itemValue.toLowerCase(Locale.US).indexOf(filter.toLowerCase(Locale.US)); int endPos = startPos + filter.length(); if (startPos != -1) // This should always be true, just a sanity check { Spannable spannable = new SpannableString(itemValue); ColorStateList blueColor = new ColorStateList(new int[][] { new int[] {}}, new int[] { Color.BLUE }); TextAppearanceSpan highlightSpan = new TextAppearanceSpan(null, Typeface.BOLD, -1, blueColor, null); spannable.setSpan(highlightSpan, startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textView.setText(spannable); } else textView.setText(itemValue);