我正在建立一个图书馆,这将有助于在Android上构建即时搜索界面。
该库操纵SearchViews
和其他UI元素将它们链接在一起并处理它们的状态。
因此,我有一些方法将SearchView
个对象作为参数,我面临两难选择:我使用android.widget.SearchView
或android.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获取原始文档。
我搜索了解决此问题的公共项目或围绕此主题的现有问题,但无法找到解决方案的任何提示。
SearchView
?