- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 addTextChangeListener 来过滤列表项。当用户在 editText 上输入一个字符时,项目将根据用户输入进行过滤。例如,如果用户输入“stackoverflow”,则显示所有包含“stackoverflow”的项目。它工作正常,除了一旦用户按退格键删除字符,项目将不再被过滤,直到他删除所有字符。
例如,我的项目是:“stackoverflow 1”、“stackoverflow 2”、“stackoverflow 3”、“stackoverflow 4”。
如果用户输入“stackoverflow”,则显示所有项目。如果用户输入“stackoverflow 1”,则只显示“stackoverflow 1”。然后用户删除最后 2 个字符(1 和空格)。用户输入现在是“stackoverflow”,但仍显示“stackoverflow 1”,其他项目不显示。
这是我的自定义过滤器:
private class ServiceFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
if (constraint == null || constraint.length() == 0) {
// No filter implemented we return all the list
results.values = origServiceList;
results.count = origServiceList.size();
}
else {
List<ServiceModel> nServiceList = new ArrayList<ServiceModel>();
for (ServiceModel s : serviceList) {
if (s.getName().toLowerCase().contains(constraint.toString().toLowerCase())) {
nServiceList.add(s);
}
}
results.values = nServiceList;
results.count = nServiceList.size();
}
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results.count == 0) {
notifyDataSetInvalidated();
}
else {
serviceList = (List<ServiceModel>) results.values;
notifyDataSetChanged();
}
}
}
以及我如何处理文本更改事件:
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
if (cs.length() >= 1) {
mAdapter.getFilter().filter(cs);
}
else {
mAdapter = new ServiceAdapter(MyActivity.this, R.layout.ussd_list_item, serviceList);
listView.setAdapter(mAdapter);
}
}
});
最佳答案
我会说是因为您过滤了现有的过滤结果,而不是原始结果。因此,当您开始退格时,它只会在您之前的结果中搜索。
试试看是否能解决问题:
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
if (constraint == null || constraint.length() == 0) {
// No filter implemented we return all the list
results.values = origServiceList;
results.count = origServiceList.size();
}
else {
List<ServiceModel> nServiceList = new ArrayList<ServiceModel>();
for (ServiceModel s : origServiceList) {
if (s.getName().toLowerCase().contains(constraint.toString().toLowerCase())) {
nServiceList.add(s);
}
}
results.values = nServiceList;
results.count = nServiceList.size();
}
return results;
}
关于按下退格键时,Android addTextChangedListener onTextChanged 未触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19625861/
我有一个带有TextInputEditText( Material 设计组件)的简单表单,无法收听文本更改。用TextWatcher添加addTextChangedListener似乎效果为零。当我运
我有动态生成和动态添加 addTextChangedListeners 的 EditText 向量。 问题是“afterTextChanged”返回的 Editable 并没有让我知道这个监听器与哪个
一直在看其他问题,但没有一个能解决我的问题。 我有一个 editText,我需要为这个字段实现一个 addTextChangedListener,这样我就可以实时更新其他 TextView 的值。 p
我想对用户在 EditText 中键入内容使用react,所以我使用了 addTextChangedListener 方法。当用户键入单个字符时,onTextChanged 代码正在运行,一切正常。因
我有一个用于填充 ListView 的数据库。在此 ListView 上方有一个编辑文本,用户可以在其中搜索 ListView 中的项目。根据输入,我希望对 ListView 进行细化和过滤,以仅包含
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
我有两个编辑文本,每个都有文本观察器,当第一个 edittext 文本更改时,它会更改第二个 edittext 文本,代码似乎创建了一个循环,我可以做些什么来使文本观察器只听用户输入而不是通过代码更改
我正在尝试创建一个在每行中包含一个 EditText 的 RecyclerView。一旦文本更改,我希望它用 println 显示位置。它运行良好,直到我在主方法中运行 .notifyDataSetC
我已经尝试使用 addTextChangedListener 三天了,日志显示它是由 java.lang.NullPointerException 引起的。当我评论 addTextChangedLis
我有一个 EditText,我可以在其中监听文本的变化: editText.addTextChangedListener(new TextWatcher() { @Override
我目前正在将数据库管理器移植到 android,并且由于性能原因我喜欢仅更新已修改的属性。我正在尝试使用 addTextChangedListener 来执行此操作,以便将修改后的条目添加到列表中,但
我有一个 ListView,其中每一行都有一个 EditText 控件。我想为每一行添加一个 TextChangedListener ;一个包含额外数据的数据,说明 EditText 在哪一行。问题是
我正在尝试根据 EditText 中文本的长度来编辑 Button 的背景。如果文本的长度为 0,那么背景应该是半透明的,否则它应该是不透明的。但是,我无法动态更新按钮的背景。如果我点击屏幕上的其他地
我使用 addTextChangeListener 来过滤列表项。当用户在 editText 上输入一个字符时,项目将根据用户输入进行过滤。例如,如果用户输入“stackoverflow”,则显示所有
我是 Android 开发新手。我正面临为项目开发应用程序的死胡同。请花点时间帮助我。 问题:我正在使用 for 循环 生成一些嵌套在 LinearLayout 中的 EditText View 。
你好 friend 我正在开发一个应用程序,它包含注册 Activity 。在此 Activity 中,应用程序需要用户名和用户的其他信息。如果用户名存在与否,我希望应用程序动态显示。此外,用户类型用
我有这个代码: areasqm.addTextChangedListener(new TextWatcher() { @Override public void afterTextCh
我想在列表中搜索并再次在列表中显示结果所以我使用了 addtextchangelistener,但找不到一种方法让它与带有子文本的 ListView 一起工作 这是我的代码: package co
我正在尝试制作两个 EditText,我在其中一个 EditText 中键入任何内容,我键入的文本将显示在另一个 EditText 上。 private EditText input_a; priva
有没有我可以指定 TextChangedListener 的 EditText 属性?我知道它有 3 个方法,所以我只想像下面这样指定属性值
我是一名优秀的程序员,十分优秀!