When reach max,pop up hint window:
private static String invalid_char[] ={"\\", "/", ":", "*", "?", "\"", "<", ">", "|", ";", "\n" };
private static Toast itoast = null;
private static Toast mtoast = null;
itoast = Toast.makeText(this, R.string.invalid_character, Toast.LENGTH_SHORT);
mtoast = Toast.makeText(this, R.string.max_char_reached_msg, Toast.LENGTH_SHORT);
editText.setFilters(getEditTextFilter());
static public InputFilter[] getEditTextFilter(){
InputFilter[] FilterArray = new InputFilter[2];
//add by dan.yin 11-12-6
//limit the input length
class SizeFilter implements InputFilter {
private int mMax;
public SizeFilter(int max) {
mMax = max;
}
public CharSequence filter(CharSequence source, int start, int end,Spanned dest, int dstart, int dend) {
int keep = mMax - (dest.length() - (dend - dstart));
if (keep <= 0) {
mtoast.cancel();
mtoast.show();
return "";
} else if (keep >= end - start) {
return null;
}
else {
return source.subSequence(start, start + keep);
}
}
}
FilterArray[0] = new SizeFilter(50);
//FilterArray[0] = new InputFilter.LengthFilter(50);
FilterArray[1] = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
for(int i=0; i<invalid_char.length; i++){
if(source.toString().indexOf(invalid_char[i]) >= 0){
itoast.cancel();
itoast.show();
return "";
}
}
return null;
}
};
return FilterArray;
}
==========================another method============================================================
private Toast mToast = null;
//mPlaylist.setFilters(new InputFilter[]{new InputFilter.LengthFilter(30)}); //256
mPlaylist.setFilters(new InputFilter[] { new InputFilter() {
@Override
public CharSequence filter(CharSequence source,
int start, int end, Spanned dest,
int dstart, int dend) {
int keep = 30 - (dest.length() - (dend - dstart));
if (keep <= 0) {
showToast(R.string.max_char_reached_msg);
return "";
} else if (keep >= end - start) {
return null;
}else {
return source.subSequence(start, start + keep);
}
}
} });
private void showToast(int resId)
{
if(mToast == null)
{
mToast = Toast.makeText(this, resId, Toast.LENGTH_SHORT);
}
else{
mToast.cancel();
mToast.setText(resId);
}
mToast.show();
}