来自MySQL的EditText AfterTextChanged过滤器-android

时间:2018-08-05 00:22:12

标签: java android mysql rest android-studio

我有一个Web服务,可以根据给定的字符串过滤相似的用户。

我使用editText AfterTextChanged侦听器在每次字符更改时发出请求。通常,我可以很好地过滤获取的列表。但是我在使用此实时过滤器时遇到了麻烦。

例如;当我设置"k"时,服务器找到"Kevin"并给出json。我将获取的列表设置为适配器,但是就像闪烁一样,并立即将其自身删除。即使我没有在editText中键入任何其他字符。有时我需要提交2-3个字符才能获得结果,但是即使我只输入“ k”,服务器也会给我json。我进行了调试,服务器端运行良好,问题出在我想的onTextChanged上。

我的片段类

 editText_search_people.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) {
            fetchSearchPeople(s.toString());
        }
    });

    return view;
}


private void fetchSearchPeople(String userNick){
    API_Service api_service = Client.getRetrofitInstance().create(API_Service.class);
    Call<List<Model_SearchPeople>> call = api_service.fetchSearchPeople(userNick);
    call.enqueue(new Callback<List<Model_SearchPeople>>() {
        @Override
        public void onResponse(Call<List<Model_SearchPeople>> call, Response<List<Model_SearchPeople>> response) {

            if(response.code() == 200){

                searchList = new ArrayList<>();
                searchList = response.body();
                adapter_searchPeople = new Adapter_SearchPeople(getContext(), searchList);
                recyclerView_search_people.setHasFixedSize(true);
                LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
                recyclerView_search_people.setLayoutManager(linearLayoutManager);
                recyclerView_search_people.setAdapter(adapter_searchPeople);

            }

        }

        @Override
        public void onFailure(Call<List<Model_SearchPeople>> call, Throwable t) {

        }
    });
}

0 个答案:

没有答案