Android ListView中的EditText作为该列表的筛选器:焦点问题
在我的活动中,我有一个带有customadapter的ListView。该列表视图中的第一项是EditText。 此EditText有一个TextWatcher,用于过滤列表Android ListView中的EditText作为该列表的筛选器:焦点问题,android,listview,filter,Android,Listview,Filter,在我的活动中,我有一个带有customadapter的ListView。该列表视图中的第一项是EditText。 此EditText有一个TextWatcher,用于过滤列表 search.addTextChangedListener(textWatcher); search.setOnFocusChangeListener(focusListener); TextWatcher textWatcher = new TextWatcher() { @Override publ
search.addTextChangedListener(textWatcher);
search.setOnFocusChangeListener(focusListener);
TextWatcher textWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(getContext() instanceof ListActivity) {
ListAdapter adapter = ((ListActivity)getContext()).getListAdapter();
if(adapter instanceof TCListObjectAdapter) {
requestfocus = true;
((TCListObjectAdapter) adapter).getFilter().filter(s);
}
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void afterTextChanged(Editable s) { }
};
OnFocusChangeListener focusListener = new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus && requestfocus){
search.post(new Runnable() {
@Override
public void run() {
search.requestFocus();
requestfocus = false;
}
});
}
}
};
列表的筛选按预期进行。但有时在更改文本后,listview的第一行会聚焦:在本例中,是搜索框的单元格,而不是EditText。如果用户想要继续过滤列表,他首先必须再次选择编辑文本
我不想为visial效果关闭在listview中聚焦单元格的选项
有什么方法可以避免在过滤时失去EditText的焦点
getListView().addHeaderView(new EditText(this));
这就满足了这些需求。是否需要在ListView中包含此EditText?你能把它和ListView分开吗?也许这有助于它保持焦点。它不需要在ListView中。但是当列表滚动时,它必须离开屏幕抱歉浪费了你的时间,这是一个愚蠢的问题,因为listview.addHeaderView(视图v)满足了这些需求。