作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有任何突出显示我正在使用的搜索文本 arrayAdapter
ListView
这是我的代码
private TextWatcher filterTextWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
adapter.getFilter().filter(s);
}
};
protected void onPostExecute(final List<Site> sites) {
progressBar.hide();
adapter = new ArrayAdapter(context, R.layout.alert_dialog_single_choice_list_item,sites);
list.setAdapter(adapter);
list.setItemChecked(selectedSite, true);
list.setSelection(selectedSite);
filterText.setVisibility(View.VISIBLE);
list.setOnItemClickListener(new AdapterView.OnItemClickListener()
}
这是onViewCreated方法
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
filterText = (EditText) view.findViewById(R.id.et_search_state);
filterText.addTextChangedListener(filterTextWatcher);
list = (ListView) view.findViewById(R.id.lv_state);
progressBar = view.findViewById(R.id.progressBar);
final ImageButton btnClear = view.findViewById(R.id.btn_clear);
btnClear.setOnClickListener(this);
new BindDataAsync().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
filterText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (charSequence.length() > 0) {
btnClear.setVisibility(View.VISIBLE);
} else {
btnClear.setVisibility(View.INVISIBLE);
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
我有支票this但这里他们使用的是自定义 adapter
;
最佳答案
尝试以下:
添加全局字段,String mSearchText = "";
在调用过滤器 (adapter.getFilter().filter(s);
) 之前,添加 mSearchText = s.toString();
改变
adapter = new ArrayAdapter(context, R.layout.alert_dialog_single_choice_list_item,sites);
到
adapter = new ArrayAdapter(context, R.layout.alert_dialog_single_choice_list_item,sites){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView text;
text = (TextView)super.getView(position, convertView, parent);
String fullText = getItem(position);
// highlight search text
if (mSearchText != null && !mSearchText.isEmpty()) {
int startPos = fullText.toLowerCase(Locale.US).indexOf(mSearchText.toLowerCase(Locale.US));
int endPos = startPos + mSearchText.length();
if (startPos != -1) {
Spannable spannable = new SpannableString(fullText);
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);
text.setText(spannable);
} else {
text.setText(fullText);
}
} else {
text.setText(fullText);
}
return text;
}
};
希望对您有所帮助!
关于android - 在 arrayAdapter ListView 中突出显示搜索到的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58077740/
有没有一种方法可以“标记”对象的属性,使它们在反射中“突出”? 例如: class A { int aa, b; string s1, s2; public int AA
我是一名优秀的程序员,十分优秀!