android历史记录的搜索页

// 保存搜索记录
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();
        }
    });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值