我想将密码掩码更改为字符串。我使用了这段代码,但这会将所有字符更改为p或a或s中的一个。
public class MyPasswordTransformationMethod extends PasswordTransformationMethod {
@Override
public CharSequence getTransformation(CharSequence source, View view) {
return new PasswordCharSequence(source);
}
private class PasswordCharSequence implements CharSequence {
private CharSequence mSource;
public PasswordCharSequence(CharSequence source) {
mSource = source;
}
public char charAt(int index) {
char[] chars= new char[3];
chars[0]='p';
chars[1]='a';
chars[2]='s';
return chars[length()] ;
}
public int length() {
return mSource.length();
}
public CharSequence subSequence(int start, int end) {
return mSource.subSequence(start, end); // Return default
}
}
}
答案 0 :(得分:1)
public char charAt(int index) { }
在指定位置(索引)返回一个字符
所以你需要
return chars[index] ;
并且至少应该添加检查索引是否在chars数组边界内。
此外,您只需编写一个开关,它不会为每个函数调用创建内存数组:
public char charAt(int index) {
switch (index) {
case 0: return 'p';
case 1: return 'a';
case 2: return 's';
case 3: return 's';
...
default: return ' ';
}
}