// 保存搜索记录
public void saveSearchHistory(String inputText) {
SharedPreferences sp = WDApplication.getContext().getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
if (TextUtils.isEmpty(inputText)) {
return;
}
//获取之前保存的历史记录
longHistory = sp.getString(SEARCH_HISTORY, “”);
String[] tmpHistory = longHistory.split(","); //逗号截取 保存在数组中
//将改数组转换成ArrayList
historyList = new ArrayList(Arrays.asList(tmpHistory));
SharedPreferences.Editor editor = sp.edit();
if (historyList.size() > 0) {
isFlag=false;
//1.移除之前重复添加的元素
for (int i = 0; i < historyList.size(); i++) {
if (inputText.equals(historyList.get(i))) {
isSameIndex = i;
isFlag = true;
demoFlow.removeViewAt(isSameIndex);
historyList.remove(isSameIndex);
break;
}
}
if (historyList.size() > 10) {
historyList.remove(historyList.size() - 1); //3.最多保存10条搜索记录 删除最早搜索的那一项
demoFlow.removeViewAt(historyList.size() - 1);
}
historyList.add(0, inputText); //将新输入的文字添加集合的第0位也就是最前面(2.倒序)
//逗号拼接
StringBuilder sb = new StringBuilder();
for (int i = 0; i < historyList.size(); i++) {
sb.append(historyList.get(i) + ",");
}
//保存到sp
editor.putString(SEARCH_HISTORY, sb.toString());
editor.commit();
} else {
//之前未添加过
editor.putString(SEARCH_HISTORY, inputText + ",");
editor.commit();
}
addChildView();
}
//添加View
public void addChildView() {
//清空之前添加的控件
ViewGroup.MarginLayoutParams lp = new ViewGroup.MarginLayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
//设置外边距
lp.leftMargin = (int) getResources().getDimension(R.dimen.dp_5);
lp.rightMargin = (int) getResources().getDimension(R.dimen.dp_5);
lp.topMargin = (int) getResources().getDimension(R.dimen.dp_5);
lp.bottomMargin = (int) getResources().getDimension(R.dimen.dp_5);
view = new TextView(this);
view.setText(s);
view.setTextColor(Color.BLACK);
//设置内边距
view.setPadding((int) getResources().getDimension(R.dimen.dp_10), (int) getResources().getDimension(R.dimen.dp_5), (int) getResources().getDimension(R.dimen.dp_10), (int) getResources().getDimension(R.dimen.dp_5));
view.setBackgroundResource(R.drawable.select_raius);
List<String> searchHistory = getSearchHistory();
//相同的数据处理
if (isFlag) {
if (isSameIndex == -1) {
return;
} else {
demoFlow.addView(view, 0, lp);
}
} else {
if (demoFlow.getChildCount()<6) {
demoFlow.addView(view, 0, lp);
}else {
demoFlow.addView(view, 0, lp);
demoFlow.removeViewAt(demoFlow.getChildCount()-1);
}
}
initListener();
}
private void initListener() {
final List<String> searchHistory = getSearchHistory();
for (int i = 0; i < demoFlow.getChildCount(); i++) {
//设置每个View的点击事件
final int finalI = i;//由于OnClick里面拿不到i,所以需要重新赋值给一个final对象
view.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onClick(View v) {
search_edit.setText("");
search_edit.setText(searchHistory.get(finalI));
}
});
view.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
UIUtils.showToastSafe("删除我");
return false;
}
});
}
}
//
private void initData() {
searchHistory = getSearchHistory();
ViewGroup.MarginLayoutParams lp = new ViewGroup.MarginLayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
//设置外边距
lp.leftMargin = (int) getResources().getDimension(R.dimen.dp_5);
lp.rightMargin = (int) getResources().getDimension(R.dimen.dp_5);
lp.topMargin = (int) getResources().getDimension(R.dimen.dp_5);
lp.bottomMargin = (int) getResources().getDimension(R.dimen.dp_5);
if (searchHistory.size()>6) {
searchHistory.remove(6);
}
for (int i = 0; i < searchHistory.size(); i++) {
view = new TextView(this);
view.setText(searchHistory.get(i));
view.setTextColor(Color.BLACK);
//设置内边距
view.setPadding((int) getResources().getDimension(R.dimen.dp_10), (int) getResources().getDimension(R.dimen.dp_5), (int) getResources().getDimension(R.dimen.dp_10), (int) getResources().getDimension(R.dimen.dp_5));
view.setBackgroundResource(R.drawable.select_raius);
//设置每个View的点击事件
final int finalI = i;//由于OnClick里面拿不到i,所以需要重新赋值给一个final对象
view.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
public void onClick(View v) {
search_edit.setText("");
search_edit.setText(searchHistory.get(finalI));
}
});
demoFlow.addView(view, lp);
}
findViewById(R.id.delete).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
delete();
}
});
findViewById(R.id.search_text).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setSearch_text();
}
});