У меня есть listview и вы хотите найти текст из него. Я сделал это успешно, но теперь я хочу найти элемент и выделить искомый текст в списке. Это моя функция фильтра в ListViewAdapter:Выделите искомый текст в пользовательском списке адаптеров
public void filter(String charText) {
charText = charText.toLowerCase(Locale.getDefault());
worldpopulationlist.clear();
if (charText.length() == 0) {
worldpopulationlist.addAll(arraylist);
}
else
{
for (WorldPopulation wp : arraylist)
{
// Find charText in wp
int startPos = wp.getCountry().toLowerCase(
Locale.getDefault()).indexOf(charText.toLowerCase(Locale.getDefault()));
int endPos = startPos + charText.length();
if (startPos != -1)
{
Spannable spannable = new SpannableString(wp.getCountry());
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);
// countryTextView.setText(spannable);
worldpopulationlist.add(wp);
}
}
}
notifyDataSetChanged();
}
Я гугле, и я знаю, что Spannable используется для этой цели, но ее не работает. Пожалуйста, помогите мне и скажите мне, нужен ли вам какой-либо другой связанный код.
РЕДАКТИРОВАТЬ:
В учебнике я следовал был из here. Я использовал тот же код с несколькими незначительными изменениями. Я просто хочу выделить искомый текст в виде списка (только один элемент, например, страна в этом случае).
Вы не устанавливая 'spannable' в любом виде. Он просто создан, но нигде не используется. –
Я устал откладывать это на вид, но вид, который я получил, был пуст, когда я его распечатал. Это то, что я попытался 'окончательный держатель ViewHolder = новый ViewHolder();' 'Вид вид = inflater.inflate (R.layout.listview_item, нуль),' ' holder.country = (TextView) view.findViewById (R.id.country); ' ' holder.country.setText (spannable); ' – Sibtain
Обновите свой ответ с помощью вашего текущего кода, и я обязательно посмотрю на него. –