通过监听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。