EditText我的视图布局中有三个小部件.有没有办法TextWatcher为所有三个人使用单身EditTexts?
我知道一点点,TextWatcher但是对你输入的每一个角色都会发出火花.我想要一个在用户完成编辑时触发的监听器.可能吗?另外在TextWatcher我得到一个实例,Editable但我需要一个实例EditText.我怎么做到的?
编辑:第二个问题更重要.请回答.
任何人都可以告诉我如何掩盖EditText中的子字符串或如何将EditText子字符串输入更改为密码类型或替换为另一个字符,如123xxxxxxxxx3455
String contents = et1.getText().toString();
et1.setText(contents.replace.substring(0, contents.length()-2),"*");
Run Code Online (Sandbox Code Playgroud)
请告诉我如何在Android中使用TextWatcher方法.
我想TextWatcher为多个EditText字段实现接口.目前我正在使用:
text1.addTextChangedListener(this);
text2.addTextChangedListener(this);
Run Code Online (Sandbox Code Playgroud)
然后重写我的Activity中的方法:
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count)
{
// do some operation on text of text1 field
// do some operation on text of text2 field
}
Run Code Online (Sandbox Code Playgroud)
然而,这工作正常但我正在寻找其他方法,以便我可以明确地确定当前关注的EditText字段SoftKeyboard.
android interface textwatcher android-edittext android-activity
我正在使用EditText过滤我的列表.我想在用户输入EditText后0.5秒过滤列表.我为此目的使用了这个afterTextChanged事件TextWatcher.但是,对于EditText中的每个字符更改,此事件都会增加.
我该怎么办?
我有一个ListView每行有EditText控件的地方.我想在TextChangedListener每一行添加一个; 一个包含额外数据的数据,它说明了哪一行EditText.问题是,当getView被调用时,TextWatchers会添加多个; 因为convertView已经有一个TextWatcher(和一个指向不同的行).
MyTextWatcher watcher = new MyTextWatcher(currentQuestion);
EditText text = (EditText)convertView.findViewById(R.id.responseText);
text.addTextChangedListener(watcher);
Run Code Online (Sandbox Code Playgroud)
MyTextWatcher是我的班级实施TextWatcher; 并处理文本事件.CurrentQuestion让我知道我正在采取哪一行.当我输入框中; TextWatcher调用多个实例.
有没有办法TextWatchers在添加新的之前删除它?我看到了removeTextChangedListener方法,但这需要TextWatcher传入一个特定的,我不知道如何获得指针TextWatcher已经存在的指针.
我需要一种方法来检测EditText是否已被用户输入内容更改或由应用程序以编程方式更改文本.这样做的任何标准方式?我想我总是可以做一些像以前那样取消TextWatcher setText()并且之后又重新设置它的东西,但是必须有更好的方法来做到这一点......对吗?
我试着检查EditText是否在TextWatcher中聚焦,但是由于EditTexts在滚动时无论如何都"半随机"聚焦,因此没什么帮助...
背景
我在每个listitem都有一个带有EditTexts的ListView.我已经整理出了存储EditTexts值的基本问题,以便在用户滚动时重用.
我还有一个TextWatcher,它汇总了所有EditTexts中的值,并在用户编辑任何EditTexts的内容时显示总和.
问题是,当我滚动列表并且我的自定义适配器重新输入EditTexts中的存储值时bindView(),这也会触发TextWatchers afterTextChanged()方法,导致滚动滞后,因为触发了求和功能.
我如何格式化EditText以遵循" dd/mm/yyyy"格式,就像我们可以使用a TextWatcher来屏蔽用户输入看起来像"0.05€"一样.我不是在谈论限制字符,或者验证日期,只是掩盖了以前的格式.
我对TextWatcher有一个恼人的问题.我一直在网上搜索,但找不到任何东西.感谢有人能帮助我.
出于某种原因,在一次文本更改时对TextWatcher事件的调用是不稳定的.有时它们会被触发一次(就像它们应该的那样),有时是两次,有时是3次.不知道为什么,整件事情非常直截了当.有时候,afterTextChanged()上的Editable参数会返回toString()和length()中的空值.
代码如下:
private TextWatcher mSearchAddressTextChangeListener = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) { }
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void afterTextChanged(Editable searchedAddress) {
System.out.println("called multiple times.");
}
};
Run Code Online (Sandbox Code Playgroud)
内部afterTextChanged()(和AsyncTask)我没有对文本或EditText视图进行任何更改.
我看到在TextWatcher的事件中询问的问题被调用了两次,但我发现事件触发的次数多于(或少于)两次.
无论如何,感谢任何帮助.
编辑:我删除了afterTextChanged()的内容导致即使没有我的代码也会发生此问题.是什么让我相信这是一个错误.当在常规字符(事件处理程序被触发两次)之后输入'space'字符时或者在删除常规字符之后的'space'字符(退格.事件处理程序被触发3次)时,会发生错误.帮助仍将受到赞赏.
在我的Android项目中,我不得不将TextChangedListener(TextWatcher)添加到编辑文本视图中.它有三个部分.
onTextChanged() beforeTextChanged() afterTextChanged()这三者的不同之处是什么?我不得不在关键的lisner上实现一个表的搜索,对于我的情况,这三个看起来都是一样的.他们也运作相同.当我输入产品名称的一部分时,表格会重新绘制,只包含那些包含输入文本的产品.但是我使用了这个afterTextChanged()部分.我的代码是
EditProduct.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
// System.out.println("onTextChanged"+s);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
// System.out.println("beforeTextChanged"+s);
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
// System.out.println("afterTextChanged"+s);
String new_prx = s.toString();
System.out.println(s);
mini_productList = new ArrayList<Product>();
// mini_productList
int count = 0; …Run Code Online (Sandbox Code Playgroud)