我想在用户在EditText中键入文本时搜索ListView。按下一个键后,我需要获取文本的打字部分才能开始搜索。所以有什么方法可以用吗?简单的帮助非常感谢。
答案 0 :(得分:1)
如果您使用ArrayAdapter
填充ListView
,请执行以下操作:
edittext.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) {
yourAdapter.getFilter().filter(s);
}
@Override
public void afterTextChanged(Editable s) {
}
});
向TextWatch
添加EditText
并使用适配器中的filter
来显示匹配的结果。要突出显示匹配的结果,您可能需要使用SpannableString进行"漂亮"它
返回一个过滤器,可用于使用过滤模式约束数据。
此方法通常由Adapter类实现。
答案 1 :(得分:0)
您可以在活动中实现TextWatcher:
http://developer.android.com/reference/android/text/TextWatcher.html
答案 2 :(得分:0)
我们假设您有一个视图xml
<EditText
android:id="@+id/search"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:imeOptions="actionSend" />
您在控制器中的代码将是
final EditText searchField = (ListView)result.findViewById(R.id.search);;
searchField.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) {
}
@Override
public void afterTextChanged(Editable s) {
//do search is the method where you will delegate the search process.
doSearch(searchField.getText().toString());
}
});
答案 3 :(得分:-2)
您必须将TextWatcher设置为您的edittext
edittext.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) {
}
@Override
public void afterTextChanged(Editable s) {
String newText = s.toString();
}
});