一般的监听方法:
- signWords.setOnFocusChangeListener(new View.OnFocusChangeListener() {
- @Override
- public void onFocusChange(View v, boolean hasFocus) {
- if(hasFocus){//获得焦点
- //在这里可以对获得焦点进行处理
- }else{//失去焦点
- //在这里可以对输入的文本内容进行有效的验证
- }
- }
- });
文本内容改变监听:addTextChangedListener
这个监听是在EditText的文本内容发生改变的时候进行触发的。触发的频率比上面的监听要高得多。所以一般不建议使用。如果你有特殊的需求,使用起来也是挺方便的。
- signWords.addTextChangedListener(new TextWatcher() {
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- if(start>0&&
- CommonUtils.matchString(checkAllow, String.valueOf(true))&&
- CommonUtils.matchString(signAttr, "sureAllowName")){//工作许可人
- System.out.println("changed:"+s);
- TaskParams params = new TaskParams();
- params.put("searchNames", String.valueOf(s));
- UserSearchTask task = new UserSearchTask();
- task.setListener(tuserSearchTaskListener);
- task.execute(params);
- }
- }
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count,
- int after) {
- }
- @Override
- public void afterTextChanged(Editable s) {
- }
- });
- /**
- * 根据语音搜索用户任务
- *
- * @author lihua
- */
- private class UserSearchTask extends GenericTask {
- @Override
- protected String _doInBackground(TaskParams... params) {
- try {
- return getApi().getSearchUserByNames(
- params[0].getString("searchNames"));
- } catch (HttpException e) {
- e.printStackTrace();
- return "error";
- }
- }
- }
- **
- * 搜索用户任务监听
- */
- private TaskListener tuserSearchTaskListener = new TaskAdapter() {
- @Override
- public void onPostExecute(GenericTask task, String result) {
- try {
- JSONObject object = new JSONObject(result);
- if("true".equals(object.getString("success"))){
- sysUserId = object.getString("sysUserId");
- signWords.setText(object.getString("fullName"));
- }else{
- //Toast.makeText(getApplicationContext(), "未找到相符的工作人员姓名", Toast.LENGTH_LONG).show();
- }
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- @Override
- public String getName() {
- return "Login";
- }
- };