- 浏览: 433691 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
yehuiyan8002:
支持中文查询
快熟查找联系人 -
lehehe:
现成的接口,免费试用,http://www.haoservic ...
天气Widget -
D.Z:
android:focusable="false&q ...
CheckBox在ListView 而导致其OnItemClickListener不会被触发 -
freecode:
碰到该问题,CheckBox的android:focusabl ...
CheckBox在ListView 而导致其OnItemClickListener不会被触发 -
echohfut:
哥们,新博客是不是在墙外啊?不能访问。还有你怎么进行博客迁移的 ...
博客 迁移
EditText 之内容监听
[功能]
以前写过通过 TextWatcher 监听 EditText 内容的改动 在知道那个之前 我都是通过 TextMonitor 监听其内容的更新 尽管现在其变得毫无意义 还是打算把之写下来
[原理]
* 2 个 thread:
写道
class TextUpdate extends Activity : 得到 EditText 的内容
class TextMonitor extends Service : 作为守护 负责监视 并返回EditText 的内容
class TextMonitor extends Service : 作为守护 负责监视 并返回EditText 的内容
* 原理
TextUpdate TextMonitor 1. Request <- 2. Reply -> 3. Notification <- 步骤: 1. TextMonitor 向 TextUpdate 发送 Message_Request 要求得到此刻 EditText 的内容 2. TextUpdate 收到 Message_Request 后 通过 EditText.getText() 得到此刻的字符串 并通过 Message_Reply 向 TextMonitor 发送 Broadcast 3. TextMonitor 在收到 Message_Reply 后 取出结果 并通过发送Broadcast 把结果通过 Message_Notification 返回结果 4. TextUpdat 在收到 Message_Notification 后 取出内容 然后刷新 TextView 内容
* 以上就是其全部原理
[代码 步骤]
1. 定义一些供 Broadcast & Message 用到的字符串
public class TextHelper { //broadcast definition public final static String Broadcast_Update = "Broadcast_Update"; public final static String Broadcast_Monitor = "Broadcast_Monitor"; //message definition public final static String Message_Request = "Message_Request"; public final static String Message_Reply = "Message_Reply"; public final static String Message_Notification = "Message_Notification"; }
2. 定义 TextMonitor 任务有:
写道
1. 发送 Message_Request
2. 发送 Message_Notification
3. 接收 Message_Reply
2. 发送 Message_Notification
3. 接收 Message_Reply
public void requestContent(){ Intent i = new Intent(TextHelper.Broadcast_Update); Bundle b = new Bundle(); b.putString(TextHelper.Message_Request, "Hello!"); i.putExtras(b); sendBroadcast(i); } public void notificationContent(String s){ Intent i = new Intent(TextHelper.Broadcast_Update); Bundle b = new Bundle(); b.putString(TextHelper.Message_Notification, s); i.putExtras(b); sendBroadcast(i); } public class MonitorMessageListenerHelper extends BroadcastReceiver { Context context; MonitorMessageListenerHelper listener; //construct public MonitorMessageListenerHelper(Context c){ context = c; //to instance it listener = this; } public void registerAction(String action){ IntentFilter filter = new IntentFilter(); filter.addAction(action); context.registerReceiver(listener,filter); } @Override public void onReceive(Context arg0, Intent arg1) { // TODO Auto-generated method stub Bundle b = arg1.getExtras(); if(b.containsKey(TextHelper.Message_Reply)){ String string = b.getString(TextHelper.Message_Reply); if(! last.equals(string)){ notificationContent(string); last = string; } requestContent(); } } }
3. 定义 TextUpdate 任务有:
写道
1. 得到 EditText 的内容
2. 把得到的内容 在 TextView 中显示之
3. 把得到的字串 通过 Message_Reply 发送
4. 接收 Message_Request 后 得到目标内容
5. 接收 Message_Notification 并显示之
2. 把得到的内容 在 TextView 中显示之
3. 把得到的字串 通过 Message_Reply 发送
4. 接收 Message_Request 后 得到目标内容
5. 接收 Message_Notification 并显示之
public String getContent(){ return edit.getText().toString(); } public void displayContent(String s){ text.setText(s); } public void sendContent(String s){ Intent i = new Intent(TextHelper.Broadcast_Monitor); Bundle b = new Bundle(); b.putString(TextHelper.Message_Reply, s); i.putExtras(b); sendBroadcast(i); } public class UpdateMessageListenerHelper extends BroadcastReceiver { Context context; UpdateMessageListenerHelper listener; //construct public UpdateMessageListenerHelper(Context c){ context = c; //to instance it listener = this; } public void registerAction(String action){ IntentFilter filter = new IntentFilter(); filter.addAction(action); context.registerReceiver(listener,filter); } @Override public void onReceive(Context arg0, Intent arg1) { // TODO Auto-generated method stub Bundle b = arg1.getExtras(); if(b.containsKey(TextHelper.Message_Request)){ sendContent(getContent()); } else if(b.containsKey(TextHelper.Message_Notification)){ String string = b.getString(TextHelper.Message_Notification); displayContent(string); } } }
4. emulator 运行截图:
5. 其实程序不太完善 缺失下面功能:
* TextMonitor 会始终运行 即使 EditText 没有焦点 有时间再改下!
done!
- TextUpdateMonitor.rar (29.4 KB)
- 下载次数: 48
发表评论
-
滑动抽屉 另一种解决办法
2010-07-09 17:43 0滑动抽屉 -
Spinner 定制化 增强版
2010-07-09 14:34 2609Spinner 作为下拉选 ... -
ListView 内容之分批显示
2010-06-25 20:38 5925ListView 内容循环显示 大家试想 假如 ... -
MediaScanner 研究
2010-06-23 15:21 3170MediaScanner 之所以拿MediaSc ... -
CheckBox在ListView 而导致其OnItemClickListener不会被触发
2010-06-22 20:55 19015CheckBox在ListView 而导致其OnItemCli ... -
获取Launcher 启动列表
2010-06-22 10:09 3138获取Launcher 启动列表 即 列出所有Launc ... -
PreferenceActivity 全接触
2010-06-19 12:53 9440PreferenceActivity 为了引入 ... -
android src 下载 编译 安装 全接触
2010-06-12 14:44 0android src - download install ... -
Intent.createChooser() 妙用
2010-06-12 11:14 5955Intent.createChooser(ntent targ ... -
SMS管理:收信箱 发信息 编写新信息
2010-06-07 08:14 14445SMS管理 [功能] 1. 收信箱:显示 ... -
求 android 手机 帮忙测试sms服务系统 谢谢
2010-06-05 08:25 1452Hi guys, 最近一段时间没有更新blog 因为一 ... -
流媒体 播放 理论篇
2010-05-28 14:42 2224流媒体播放 之所以为理论篇 因为该篇仅实现了播放功能 ... -
NDK 搭建与HelloWorld
2010-05-19 09:48 3225NDK [前提] 1. Cygwin 用于安装 ... -
自定义字体
2010-05-15 10:49 1221自定义字体: []代码 步骤] 1 ... -
模糊查找 再深入
2010-05-15 09:41 3158模糊查找 再深入 应某位大哥要求 再次对 SQLite ... -
快捷方式Bar + ViewGroup - 自定义
2010-05-09 09:20 2470TabActivity - 自定义 其实 这篇感觉极鸡 ... -
View 拖动&插入 研究
2010-05-09 07:14 3985View 拖动&插入 即: ... -
带图标 快捷键 Menu - 终极版
2010-05-04 20:23 1837Menu 改头换面 扩展如下: 1. 图标化文字 2 ... -
*.gif 解码 - 实践
2010-05-02 18:58 1737*.gif decode 前面已经说过 今天不打算再说了 ... -
*.gif 解码 - 理论
2010-05-01 21:11 1522我们知道Android 默认是不支持*.gif 的 但是 ...
相关推荐
事件监听器是Android开发中的重要概念,用于捕捉和响应用户在界面上的各种交互操作。在Android中,事件监听器主要用于处理UI控件的点击、触摸、键盘输入等事件。本篇将详细介绍EditText的事件监听。 首先,我们来看...
为了能够实时响应`EditText`中的文本变化,开发者通常会使用`TextWatcher`监听器。`TextWatcher`是一个接口,提供了三个方法,帮助我们监控`EditText`中文字的添加、删除和替换操作。下面我们将详细探讨`EditText`...
在Android开发中,`EditText` 是一个非常重要的组件,它允许用户输入文本并显示文本内容。在许多场景下,我们可能需要监听用户在`EditText`中的输入行为,特别是在用户完成输入后执行某些操作,比如验证输入内容、...
首先,我们需要创建一个 `EditText` 并为其设置监听器。`TextWatcher` 是一个接口,它包含三个方法:`beforeTextChanged`、`onTextChanged` 和 `afterTextChanged`。这三个方法分别在文本改变前、改变中和改变后被...
2. **EditText的监听器**:为每个EditText设置`TextWatcher`监听器,以便在用户输入时记录内容。可以在`afterTextChanged()`方法中获取到最新的输入值。 3. **数据模型**:创建一个数据模型类,它包含与EditText相...
这里,`setOnClickListener`为按钮添加了一个点击监听器,当按钮被点击时,`editText.setText("")`会清除`EditText`中的所有文本。 #### 1.2 使用`InputMethodManager`隐藏软键盘 除了清空文本,我们还可以同时...
3. **文本监听**:EditText提供了多种监听器,如`TextWatcher`,用于监听文本内容的改变。开发者可以通过`addTextChangedListener()`添加监听器,实时获取文本变化信息。 4. **输入类型与键盘控制**:`setInputType...
3. 在自定义EditText的构造函数中,找到并初始化删除按钮,设置点击事件监听器。当按钮被点击时,调用EditText的`setText("")`方法来清空文本。 4. 如果想要实现全局引用,可以将自定义的EditText控件封装到一个库...
2. **焦点改变监听器**:`FocusChangeListener`用于监听`EditText`焦点的变化。我们可以重写`onFocusChange(View v, boolean hasFocus)`方法,在其中判断当前`EditText`是否获得焦点,如果失去焦点,执行相应的跳转...
在Android中,我们可以为EditText的父布局或者一个单独的清除按钮设置监听器。当点击这个按钮时,调用EditText的setText()方法,将其内容清空。以下是一个简单的示例: ```java // 获取EditText EditText editText ...
在用户开始编辑时,保存当前EditText的数据,例如在`beforeTextChanged()`、`onTextChanged()`或`afterTextChanged()`监听器中。 6. **监听ListView滚动**:添加OnScrollListener监听ListView的滚动事件。当...
// 添加文本变化监听器 addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void ...
项目的实现细节可能会包括如何在`EditText` 的监听器中处理点击事件,以及如何动态地显示或隐藏删除按钮,这取决于用户是否已有输入。此外,为了提供更好的用户体验,开发者可能还会考虑动画效果,例如点击删除按钮...
- `setOnFocusChangeListener`:当`EditText`获取或失去焦点时触发的监听器。 - `setOnClickListener` 和 `setOnLongClickListener`:点击和长按事件处理。 4. 高级功能: - 密码框:通过`android:inputType=...
解决这个问题的一个常见方法是使用ListView的`setOnItemSelectedListener`或`setOnFocusChangeListener`监听器,以及EditText的`clearFocus()`方法,确保在焦点转移时正确处理视图状态。同时,可能还需要重写...
此外,我们还可以监听EditText的文本变化,通过添加TextWatcher监听器实现: ```java editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start...
2. 实现TextWatcher监听器,重写三个方法,监听用户输入的变化。在afterTextChanged方法中,获取用户输入的字符串并执行搜索操作。 3. 搜索操作可以是遍历数据源,根据输入的关键词过滤匹配项。这里的数据源可能来自...
然后,在你的`EditText`中应用这个过滤器: ```xml <EditText android:id="@+id/et_input" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="text" android:...
- 对EditText的文本改变监听器做优化,比如使用`postDelay()`延迟执行,或者在滚动时暂停监听。 3. EditText的焦点管理: - 可以使用`FocusChangeListener`监听EditText的焦点变化,当一个EditText失去焦点时,...
在创建EditText时,我们可以为其设置一个TextWatcher监听器,监听文本的变化。TextWatcher提供了三个方法:beforeTextChanged(), onTextChanged() 和 afterTextChanged()。在这里,我们主要关心afterTextChanged(),...