Android XlistView和输入发冲突问题

通过监听EditText的关键字搜素,更新XlistView 的数据,addTextChangedListener三个方法的Toast都运行,但是必须把输入法托盘最小化之后数据才会更新

 et.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                // TODO 自动生成的方法存根
                Toast.makeText(getApplicationContext(), "onTextChanged", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                    int arg3) {
                // TODO 自动生成的方法存根
                Toast.makeText(getApplicationContext(), "beforeTextChanged", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void afterTextChanged(Editable arg0) {
                Toast.makeText(getApplicationContext(), "afterTextChanged", Toast.LENGTH_SHORT).show();
                // TODO 自动生成的方法存根
                listdata.clear();
                pageFresh("1",et.getText()+"");
            }
        });
 public int pageFresh(String page,String wName) {

        String rd;
        try {
            rd = gp.ziLiaoList(ZiLiaoListActivity.this, page, "15", id, wName);
            System.out.println("rd = " + rd);
            JSONObject root = new JSONObject(rd.toString());
            // 如果登录超时就返回登录界面重新登录
            Boolean check = gp.checkMsg(ZiLiaoListActivity.this, root);

            if (check) {
                JSONArray jsonArray = root.getJSONArray("data");
                JSONcount = jsonArray.length();
                for (int i = 0; i < JSONcount; i++) {

                    String wdNewName = jsonArray.getJSONObject(i).getString(
                            "wdNewName");
                    String wdName = jsonArray.getJSONObject(i).getString(
                            "wdName");
                    String wdExt = jsonArray.getJSONObject(i)
                            .getString("wdExt");
                    String id = jsonArray.getJSONObject(i).getString("id");

                    Map<String, Object> map = new HashMap<String, Object>();
                    map.put("name", wdName.trim() + "." + wdExt);
                    map.put("wdNewName", wdNewName + "." + wdExt);// 接收人姓名
                    map.put("phone", ""); // 消息内容
                    map.put("id", id.trim()); // 主键,不显示

                    listdata.add(map);

                }
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return JSONcount;
    }

问题应该不是出在这儿,应该是数据更新了没显示出来,调试一下看看

如果是实现边输入边搜索 ,方法就应该在onTextChanged里面调用,如果是输入完成后搜索可以监听键盘的回车事件setOnEditorActionListener。