Intereting Posts
Android-разрешение не работает, даже если я его объявил Camera.open () блокирует поток пользовательского интерфейса Default locale для getRelativeTimeSpanString Пример взаимодействия с HandlerThread Android и iOS веб-приложение, завернутое в родной Ссылка на виртуальные машины Dalvik или Java? Ваш контент должен иметь TabHost, чей атрибут id – android.R.id.tabhost. Android, изменение подчеркивания Цвет из EditText динамически USB bulkTransfer между планшетом Android и камерой Биллинг в приложении v3 не может запрашивать элементы без сетевого подключения или в режиме полета / полета Исключение NullPointerException, связанное с FragmentManager.popBackStack. Как решить? Получение динамически доступных языков приложения Фрагмент Tabhost Ошибка: java.lang.IllegalStateException: нет закладки, известной для тега null При недоступности подключения к Интернету Структура ресурсов в Apache Cordova (PhoneGap) и загрузка файлов из файловой системы Перезапуск убитых (остановленных задачами-убийцами) служб в android, таких как Whatsapp

Выделите искомый текст в элементах 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; } 

Спасибо.

Solutions Collecting From Web of "Выделите искомый текст в элементах ListView"

Я предполагаю, что у вас есть пользовательский адаптер с 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);