Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在ListView中搜索不';我不能正常工作_Android_Android Layout_Listview_Search - Fatal编程技术网

Android 在ListView中搜索不';我不能正常工作

Android 在ListView中搜索不';我不能正常工作,android,android-layout,listview,search,Android,Android Layout,Listview,Search,我有一个listView,里面有大约30个项目,并通过editText向它添加了一个搜索功能。当我在文本字段中键入“a”时,列表上会显示以“a”开头的所有内容,但当我键入另一个字母时,列表将消失,即使列表中包含一个以“a”开头的项目+我键入的另一个字母 另一件让我困惑的事情是,列表中有一个项目叫做IWU交易,这是我唯一可以搜索的项目,这意味着如果我键入“I”+“W”,该项目将显示在列表视图中。但是如果我输入'a'+'r',一个名为'art'的项目就会出现 我的问题。 如何使此搜索功能正常工作?

我有一个listView,里面有大约30个项目,并通过editText向它添加了一个搜索功能。当我在文本字段中键入“a”时,列表上会显示以“a”开头的所有内容,但当我键入另一个字母时,列表将消失,即使列表中包含一个以“a”开头的项目+我键入的另一个字母

另一件让我困惑的事情是,列表中有一个项目叫做IWU交易,这是我唯一可以搜索的项目,这意味着如果我键入“I”+“W”,该项目将显示在列表视图中。但是如果我输入'a'+'r',一个名为'art'的项目就会出现

我的问题。 如何使此搜索功能正常工作? 为什么它会表现得像这样

我的XML

    <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);