Android:在SearchView中输入文本时阻止文本字段弹出

Fel*_*lix 4 search android listview android-widget

你好Android开发者,

我的Android SearchView小部件有问题.我要做的是将"实时"文本过滤器附加到我的ListView(文本输入自动刷新过滤器结果).它的工作原理很好,并且使用这些代码在ListActivity上工作并没有太大的努力:

private SearchView listFilter;

this.listFilter = (SearchView) findViewById(R.id.listFilter);
this.listFilter.setOnQueryTextListener(this);
this.listFilter.setSubmitButtonEnabled(false);

this.getListView().setOnItemClickListener(this);
this.getListView().setTextFilterEnabled(true);

// from OnQueryTextListener
public boolean onQueryTextChange(String newText) {
    if (newText.isEmpty()) {
        this.getListView().clearTextFilter();
    } else {
        this.getListView().setFilterText(newText);
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

这里是xml小部件声明

<SearchView
    android:id="@+id/listFilter"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:iconifiedByDefault="false"
    android:queryHint="enter text to filter" />
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,每次我在SearchView中输入文本时,会立即弹出一个奇怪的文本字段,显示与我刚刚输入的相同的文本,这是无用的,因为我可以在SearchView本身看到我的输入,它部分阻止了看到我的列表条目,这很烦人.

是否有任何方法可以防止在输入SearchView时弹出该文本字段?我在xml定义的小部件选项和java类引用上都找不到任何属性.

我知道有另一种方法可以通过使用EditText和TextWatcher来提供过滤器功能,但是我必须自己处理过滤,并且无法从为我处理它的SearchView中获利.

任何建议表示赞赏.最好的祝福

费利克斯

A P*_*cha 5

我发现了如何摆脱那个丑陋的弹出窗口.诀窍是直接使用过滤器.下面的代码假设您已在customAdapter中实现了可过滤.

public boolean onQueryTextChange(String newText) {
    if (TextUtils.isEmpty(newText)) {
       m_listView.clearTextFilter();
    } else {
       ContactsAdapter ca = (ContactsAdapter)lv.getAdapter();
       ca.getFilter().filter(newText);
       //following line was causing the ugly popup window.
       //m_listView.setFilterText(newText);
    }
   return true;
}
Run Code Online (Sandbox Code Playgroud)