android 自定义选择框
1.包含历史搜索,热门搜索;
2.可以从服务器或者本地加载数据;
3.历史记录缓存,动态添加记录
4 listView,gridView两种显示方式
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.tangguna:SearchBox:1.0.1'
}
###使用方式
public abstract void Search(String str):搜索关键字
public abstract void Back():返回
public abstract void ClearOldData():清空历史记录
public abstract void SaveOldData(ArrayList<String> AlloldDataList):保存搜索记录
在XML中添加布局
<com.tangguna.searchbox.library.widget.SearchLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/msearchlayout"
app:search_hint="输入搜索内容"
app:search_baground="@drawable/search_baground_shap">
</com.tangguna.searchbox.library.widget.SearchLayout>
实现initData(@Nullable List olddatalist,@Nullable List hotdata, onSearchCallBackListener sCb,int styleId)
/**
*
* @param olddatalist 历史搜索数据集合
* @param hotdata 热门搜索数据集合
* @param sCb 事件处理监听
* @param styleId 热门搜索样式(值在1到5之间) 可以在drawable下修改、添加 sousuo_bg_gray_X等样式背景
*/
public void initData(@Nullable List<String> olddatalist,@Nullable List<String> hotdata, onSearchCallBackListener sCb,int styleId){
}
List<String> skills = HistoryCache.toArray(getApplicationContext());
String shareHotData ="C++,C,PHP,React";
List<String> skillHots = Arrays.asList(shareHotData.split(","));
searchLayout.initData(skills, skillHots, new onSearchCallBackListener() {
@Override
public void Search(String str) {
//进行或联网搜索
Log.e("点击",str.toString());
Bundle bundle = new Bundle();
bundle.putString("data",str);
startActivity(SearchActivity.class,bundle);//此方法为跳转传值,详情见代码
}
@Override
public void Back() {
finish();
}
@Override
public void ClearOldData() {
//清除历史搜索记录 更新记录原始数据
HistoryCache.clear(getApplicationContext());
Log.e("点击","清除数据");
}
@Override
public void SaveOldData(ArrayList<String> AlloldDataList) {
//保存所有的搜索记录
HistoryCache.saveHistory(getApplicationContext(),HistoryCache.toJsonArray(AlloldDataList));
Log.e("点击","保存数据");
}
},1);
HistoryCache为历史记录缓存类,包含方法如下:
public static void clear(Context context):清除所有数据
public static void saveHistory(Context context, String result):保存记录
public static String getHistory(Context context):获取保存记录
public static List<String> toArray(Context context):把json数据转换成list
public static String toJsonArray(List<String> historyList):ArrayList 转换成JsonArray