Android 在ListView中搜索不';我不能正常工作
我有一个listView,里面有大约30个项目,并通过editText向它添加了一个搜索功能。当我在文本字段中键入“a”时,列表上会显示以“a”开头的所有内容,但当我键入另一个字母时,列表将消失,即使列表中包含一个以“a”开头的项目+我键入的另一个字母 另一件让我困惑的事情是,列表中有一个项目叫做IWU交易,这是我唯一可以搜索的项目,这意味着如果我键入“I”+“W”,该项目将显示在列表视图中。但是如果我输入'a'+'r',一个名为'art'的项目就会出现 我的问题。 如何使此搜索功能正常工作? 为什么它会表现得像这样 我的XMLAndroid 在ListView中搜索不';我不能正常工作,android,android-layout,listview,search,Android,Android Layout,Listview,Search,我有一个listView,里面有大约30个项目,并通过editText向它添加了一个搜索功能。当我在文本字段中键入“a”时,列表上会显示以“a”开头的所有内容,但当我键入另一个字母时,列表将消失,即使列表中包含一个以“a”开头的项目+我键入的另一个字母 另一件让我困惑的事情是,列表中有一个项目叫做IWU交易,这是我唯一可以搜索的项目,这意味着如果我键入“I”+“W”,该项目将显示在列表视图中。但是如果我输入'a'+'r',一个名为'art'的项目就会出现 我的问题。 如何使此搜索功能正常工作?
<EditText
android:id="@+id/searchEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/selectCustomerTextView"
android:layout_marginTop="20dp"
android:hint="@string/typeToSearch"
android:ems="10"
android:imeOptions="actionDone"
android:inputType="textNoSuggestions"/>
<ListView
android:id="@+id/list_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/nextButton"
android:layout_alignParentLeft="true"
android:layout_below="@+id/searchEditText"
android:choiceMode="singleChoice"
android:dividerHeight="5dp" >
</ListView>
}通过添加以下内容解决了此问题:
ListView listView = (ListView) findViewById(R.id.list_view);
((Filterable) listView.getAdapter()).getFilter().filter(s);
进入
TextWatcher
的extextchanged
方法(阅读Luksprog的评论后)。通过添加以下内容解决了问题:
ListView listView = (ListView) findViewById(R.id.list_view);
((Filterable) listView.getAdapter()).getFilter().filter(s);
进入
TextWatcher
的extchanged
方法(阅读Luksprog的评论后)。请添加您的旧适配器类。检查这是否是过滤列表视图的错误方法。如果要使用默认的ArrayAdapter
,那么只需调用((ArrayAdapter)listview.getAdapter).filter代码>从后文本更改
。我看不到明显的错误。但问题似乎很容易调试:您不能记录word、s.toString()和word.substring(0,textLength)并精确查看出了什么问题吗?或者使用调试器?嗯,我会试着调试它。它可能是虚拟设备中的某种自动完成功能吗*推测请添加您的旧适配器类。检查这是否是筛选列表视图的错误方法。如果要使用默认的ArrayAdapter
,那么只需调用((ArrayAdapter)listview.getAdapter).filter代码>从后文本更改
。我看不到明显的错误。但问题似乎很容易调试:您不能记录word、s.toString()和word.substring(0,textLength)并精确查看出了什么问题吗?或者使用调试器?嗯,我会试着调试它。它可能是虚拟设备中的某种自动完成功能吗*推测
public class Customer {
private final int _custNumber;
private final String _custName;
public Customer(int custNumber, String custName){
_custNumber = custNumber;
_custName = custName;
}
public int getCustNumber() {
return _custNumber;
}
public String getCustName() {
return _custName;
}
@Override
public String toString(){
return _custName;
}
ListView listView = (ListView) findViewById(R.id.list_view);
((Filterable) listView.getAdapter()).getFilter().filter(s);