gpt4 book ai didi

android - 如何在 RecyclerView 适配器中高亮搜索文本

转载 作者:搜寻专家 更新时间:2023-11-01 09:32:23 25 4
gpt4 key购买 nike

我在我的应用程序中使用了 RecyclerView 和自定义适配器...适配器实现了 Filterable 以进行搜索。如何设置高亮搜索文本?

这是我在自定义适配器中可过滤的代码:

private Filter filterResult = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
ArrayList<Moment> tempList = new ArrayList<>();
if (MOMENT_FILTER != null) {
if (TextUtils.isEmpty(constraint)) {
tempList = (ArrayList<Moment>) MOMENT_FILTER;
} else {
int length = MOMENT_LIST.size();
int i = 0;
while (i < length) {
Moment item = MOMENT_FILTER.get(i);
if (item.getMoment().contains(constraint))
tempList.add(item);
i++;
}
}
}
filterResults.values = tempList;
filterResults.count = tempList.size();
return filterResults;
}

@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
MOMENT_LIST = (ArrayList<Moment>) results.values;
if (results.count > 0) {
notifyDataSetChanged();
}
}
};

@Override
public Filter getFilter() {
return filterResult;
}

这是我在文本更改 (EditText) Activity 中的代码:

EDT_SEARCH.addTextChangedListener(new TextWatcher() {

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
adapter.getFilter().filter(s);
}

@Override
public void afterTextChanged(Editable s) {
}
});

Sahil 的回答结果正常!

最佳答案

在您的适配器中引用 searchText然后在你的 OnBindViewHolder 中你可以这样做

String text = list.get(position).getText(); // Your getter Method
String htmlText = text.replace(searchText,"<font color='#c5c5c5'>"+searchText+"</font>");
// Only searchText would be displayed in a different color.
holder.textView.setText(Html.fromHtml(htmlText );

关于android - 如何在 RecyclerView 适配器中高亮搜索文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46020846/

25 4 0