如何在我的库中处理这两种SearchView?

时间:2016-08-08 15:08:30

标签: android android-appcompat searchview android-library

情况

我正在建立一个图书馆,这将有助于在Android上构建即时搜索界面。 该库操纵SearchViews和其他UI元素将它们链接在一起并处理它们的状态。

因此,我有一些方法将SearchView个对象作为参数,我面临两难选择:我使用android.widget.SearchViewandroid.support.v7.widget.SearchView,但我无法接受< em> both AppCompat SearchView 标准SearchView

目前,我通过重载我的库的公共方法来接受这两个SearchView类,并在内部操作一个包装类来处理这个问题,该类包含对每种SearchView的实例的引用,可以使用any进行初始化,并将每个方法调用转发给实际的SearchView

public class SearchViewFacade {
    private SearchView searchView;
    private android.support.v7.widget.SearchView supportView;

    public SearchViewFacade(SearchView searchView) {
        this.searchView = searchView;
    }

    public SearchViewFacade(android.support.v7.widget.SearchView searchView) {
        supportView = searchView;
    }

    public void setQuery(CharSequence query, boolean submit) {
        if (searchView != null) {
            searchView.setQuery(query, submit);
        } else {
            supportView.setQuery(query, submit);
        }
    }
}  

问题

显然这不是一个很好的解决方案:需要包装SearchView的方法会非常麻烦。这也会阻止IDE获取原始文档。

我搜索了解决此问题的公共项目或围绕此主题的现有问题,但无法找到解决方案的任何提示。

库是否有更好的方法来处理标准和AppCompat的SearchView

0 个答案:

没有答案