Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.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中的EditText作为该列表的筛选器:焦点问题_Android_Listview_Filter - Fatal编程技术网

Android ListView中的EditText作为该列表的筛选器:焦点问题

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

在我的活动中,我有一个带有customadapter的ListView。该列表视图中的第一项是EditText。 此EditText有一个TextWatcher,用于过滤列表

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)满足了这些需求。