TextWatcher StringBuilder append方法将CharSequence附加到两个StringBuilder对象

时间:2017-07-06 17:05:17

标签: java android append stringbuilder

我试图用字符替换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> ); }); } ,但很明显,此方法不起作用。

1 个答案:

答案 0 :(得分:0)

在原始字符串上使用replace方法找到解决方案:

replace = pass.toString().replace("*", "");
Toast.makeText(Pass.this, replace, Toast.LENGTH_SHORT).show();