我试图用字符替换EditText视图的显示值,同时将原始输入保存在另一个StringBuilder对象中。
以下是代码:
final StringBuilder stringBuilderHiddenPassword = new StringBuilder();
final StringBuilder mPass = new StringBuilder();
pass = new StringBuilder();
etPassword.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
stringBuilderHiddenPassword.append("*");
etPassword.removeTextChangedListener(this);
etPassword.setText(stringBuilderHiddenPassword);
etPassword.addTextChangedListener(this);
}
@Override
public void afterTextChanged(Editable s) {
pass.append(s);
Toast.makeText(Pass.this, pass, Toast.LENGTH_SHORT).show();
}
});
第一个输入的字符在Toast中显示为原始字符,但第二个字符会为其添加*
。因此,如果我输入a
,则会显示a
,如果我输入aa
,则会显示aa*
,aaa
aa*a**
stringBuilderHiddenPassword
等等。
如何将这些对象同时分开?代码应仅附加到renderPosts() {
return _.map(this.props.posts, post => {
return (
<li className="list-group-item" key={post.id}>
{ post.title }
</li>
);
});
}
,但很明显,此方法不起作用。
答案 0 :(得分:0)
在原始字符串上使用replace
方法找到解决方案:
replace = pass.toString().replace("*", "");
Toast.makeText(Pass.this, replace, Toast.LENGTH_SHORT).show();