2020/09/01更新
主要涉及以下5个方面
- 开发语言换成Java
- 将ListView替换成RecyclerView
- 将SearchSpinner独立成一个Module
- 迁移至androidX
- 对代码进行一定程度上的优化
下一次的优化计划:优化代码结构。更新时间:未知。现在SearchSpinner里面一堆set方法,看起来特别乱(这个方面还是觉得Kotlin好)。虽然用各种注释区分,但方法太多,还是没办法从根本上解决乱这个问题。
更换过程只是简单粗暴将Kotlin语言翻译成Java,并对小部分代码优化,测试只是从功能上进行测试,并没有检查代码逻辑。所以没办法保证和修改前完全一致,有Bug麻烦提issues,看到并且有时间的话会修改。
效果图:


使用方式:
1:可以继承SearchSpinner,然后给个泛型,这样在findViewById的时候就不用强转,并给filterModel这个变量赋值,
这个是负责当输入框有内容的时候,根据输入框的内容设置是否显示遍历到的内容。contentModel可以不赋值,如果空的话直接调用该对象分的toString()方法。
2:也可以直接使用StringSearchSpinner,filterModel默认是判断输入遍历到的字符串是否包含输入的内容.
3:继承BaseSpinnerAdapter的用法,该类需要指定2个泛型:数据类型和ViewHolder。ViewHolder提供了SimpleViewHolder,内部并没有做复杂的实现,只是直接继承。
BaseSpinnerAdapter需要重写4个方法:onCreateNormalViewHolder、onCreateSearchViewHolder、onBindNormalViewHolder和onBindSearchViewHolder。
其实就是将onCreateViewHolder和onBindViewHolder两个方法拆成四个,用法见名知义。
如果两个search方法的逻辑和两个normal方法的逻辑是一样的话,那可以继承SimpleSpinnerAdapter。
| 属性名称 | 类型 | 注释 |
|---|---|---|
| ss_elevationSize | dimension | 阴影的大小 |
| ss_adapterItemHeight | dimension | adapter的高度 |
| ss_defaultText | string | 默认的文本 |
| ss_textColor | color | 默认/选择后显示的文本的颜色 |
| ss_textSize | dimension | 默认/选择后文本的大小 |
| ss_showArrow | boolean | 是否显示三角形 |
| ss_changeArrowColor | boolean | 是否改变三角形的颜色,默认不改变 |
| ss_arrowColor | color | 如果改变的话改变的颜色,默认#FFAAAAAA |
| ss_arrowImage | color|reference | 三角形的图片,要更换的时候才使用 |
| ss_arrowWidth | dimension | 三角形的宽度,不设置使用原始高度 |
| ss_arrowHeight | dimension | 三角形的高度,不设置使用原始高度 |
| ss_tipText | string | 当没有搜索结果的时候,提示的文本,默认暂无搜索结果 |
| ss_tipTextColor | color | 当没有搜索结果的时候,提示的文本的颜色,默认@android:color/black |
| ss_tipTextSize | dimension | 当没有搜索结果的时候,提示的文本的大小,默认15sp |
| ss_tipViewHeight | dimension | 当没有搜索结果的时候,提示的文本的高度,默认跟随根View的高度 |
| ss_searchTextSize | dimension | 搜索框的文本的大小,默认15sp |
| ss_searchTextColor | color | 搜索框的文本的颜色,默认#FF000000 |
| ss_searchHint | string | 搜索框提示的文本,默认空 |
| ss_searchHintColor | color | 搜索框提示的文本的颜色,默认#FFFAFAFA |
| ss_searchHeight | dimension | 搜索框的高度,默认跟随根View的高度 |
| 属性名称 | 类型 | 注释 |
|---|---|---|
| ss_ignoreCase | boolean | 搜索的时候是否忽略大小写 |