Android 延迟搜索思路

165 阅读1分钟
  private void search(){
        searchView.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }

            @Override
            public void afterTextChanged(Editable s) {
                //1.判断输入是否完成
                searchStr = searchView.getText().toString();
                if(searchTimer!=null){
                    return;
                }
                //2.判断是否清空了输入框
                if(searchStr.equals("")){
                    searchTimer=null;
                    searchEnterpriseListView.setVisibility(View.GONE);
                    swipeRefreshLayout.setVisibility(View.VISIBLE);
                    return;
                }else{
                    searchEnterpriseListView.setVisibility(View.VISIBLE);
                    swipeRefreshLayout.setVisibility(View.GONE);
                }
                searchTimer = new Timer();
                searchTimer.schedule(new TimerTask() {
                    @Override
                    public void run() {
                        while(true){
                            if(searchStr.equals(searchView.getText().toString())){
                                //发送消息查询
                                Map<String,String> params = new HashMap<>();
                                params.put("enterprise",searchStr);
                                AsynchronousApi.httpPost(EnterpriseListAvtivity.this, Cloud.getAPI_MAP(),params, new Consumer<CommonResp>() {
                                    @Override
                                    public void accept(CommonResp o) throws Exception {
                                        List<SiteInfo> site = JSON.parseObject(o.getData().toString(), new TypeReference<List<SiteInfo>>(){});
                                        searchAdapter = new EnterpriseListAdapter(EnterpriseListAvtivity.this,site);
                                        searchEnterpriseListView.setAdapter(searchAdapter);
                                    }
                                });
                                searchTimer=null;
                                break;
                            }
                        }
                    }
                },1500);//延时1.5s执行
            }
        });
    }