按下键后如何获取编辑文本的文本
how to get the text of a edit text when after pressing a key
我想在用户在 EditText 中键入文本时搜索 ListView。按下一个键后,我需要获取文本的键入部分才能开始搜索。那么有什么方法可以使用吗??非常感谢简单的帮助。
您可以在您的 activity 中实施 TextWatcher,看看:
http://developer.android.com/reference/android/text/TextWatcher.html
您必须为您的编辑文本设置一个 TextWatcher
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();
}
});
假设您有一个视图 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());
}
});
如果您使用 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 来“美化”它。
Returns a filter that can be used to constrain data with a filtering pattern.
This method is usually implemented by Adapter classes.
我想在用户在 EditText 中键入文本时搜索 ListView。按下一个键后,我需要获取文本的键入部分才能开始搜索。那么有什么方法可以使用吗??非常感谢简单的帮助。
您可以在您的 activity 中实施 TextWatcher,看看:
http://developer.android.com/reference/android/text/TextWatcher.html
您必须为您的编辑文本设置一个 TextWatcher
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();
}
});
假设您有一个视图 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());
}
});
如果您使用 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 来“美化”它。
Returns a filter that can be used to constrain data with a filtering pattern.
This method is usually implemented by Adapter classes.