前言
通过官方控件SearchView来实现搜索是一种常用的方法。有时我们在传递参数时,不仅要传递在SearchView搜索框中用户输入的内容,有时还会携带一些其他信息。通过查看源码,找到了一个隐藏的方法,setAppSearchData(Bundle appSearchData)
。本文先对该方法进行描述,另一部分对Android的搜索进行部分讲解。
SearchView传递大量数据的方法
SearchView中关于该方法的源码
由于该方法是隐藏的,所以在官方文档中没有体现。只能通过查看源码来查看。
/**
* Sets the APP_DATA for legacy SearchDialog use.
* @param appSearchData bundle provided by the app when launching the search dialog
* @hide
*/
public void setAppSearchData(Bundle appSearchData) {
mAppSearchData = appSearchData;
}
可以通过向bundle中传入数据来达到传入大量参数的目的。可以在为SearchView设置的文本监听中为bundle传入值。可以使用bundle的很多方法,传入各种基本类型的值。这里推荐putParcelable(String key, Parcelable value)
,如果你觉得创建Parcelable很麻烦,可以通过使用androidstudio的parcelable插件来进行创建。
获取bundle值
SearchView的Intent是由系统的SearchManager来进行管理的,该intent是一个隐式意图:Intent.ACTION_SEARCH
。该意图的intent.getStringArrayExtra(SearchManager.QUERY)
可以获取用户输入,通过intent.getBundleExtra(SearchManager.APP_DATA)
可以获取我们传入的bundle,通过该bundle就可以对我们传入bundle的数据进行操作了。
以上就是实现SearchView传递大量数据的方法了。
关于android中的搜索
这一部分将介绍SearchableInfo,SearchManager,onSearchRequest等。以及手动实现导航栏SearchView的伸缩。
时间有限,后续补充…