我根据数据库表中的记录在我的android项目中动态创建EditText
。
每个表有3列,数据类型为text和integer
现在我想对每个EditText
进行验证,如果数据类型是整数,那么它只接受整数值或文本然后接受字符串值。
怎么做。
for(int i=0;i<count;i++)
{
//cout is a variable which returns no of columns in my table
//add edittext to arralist
enter_text=new EditText(DisplayTable_Grid.this);
String s="{datatype=text}";// i stored data type in arraylist<hashmap<string>> so thats y its in such format
String d=arraylist.get(i).toString();
if(d.matches(s))
{
enter_text.setInputType(InputType.TYPE_CLASS_NUMBER);
Toast.makeText(getApplicationContext(), "mached",Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(), " not mached",Toast.LENGTH_LONG).show();
}
allEds.add(enter_text);
allEds.get(i).setText(cr.getString(cr.getColumnIndex(getColumnNames.get(i))));
linearlayout.addView(enter_text);
} //this is my code ..so now what can i do
答案 0 :(得分:3)
您需要为InputType
使用EditText
。
例如。
1)文字输入: edtText.setInputType(InputType.TYPE_CLASS_TEXT);
2)号码输入: edtText.setInputType(InputType.TYPE_CLASS_NUMBER);
有关
的更多参考资料 1)InputType
以及所有其他输入类型,请参阅here
2)用于设置editText.setInput()方法。
<强> UPDATE :: 强>
for(int i=0;i<count;i++)
{
//cout is a variable which returns no of columns in my table
//add edittext to arralist
EditText enter_text=new EditText(DisplayTable_Grid.this);
String s="{datatype=text}";// i stored data type in arraylist<hashmap<string>> so thats y its in such format
String d=arraylist.get(i).toString();
if(d.matches(s))
{
//since this
enter_text.setInputType(InputType.TYPE_CLASS_TEXT);
Toast.makeText(getApplicationContext(), "mached",Toast.LENGTH_LONG).show();
}
else if(d.matches("{datatype=integer}"))
{
enter_text.setInputType(InputType.TYPE_CLASS_NUMBER);
Toast.makeText(getApplicationContext(), " not matched",Toast.LENGTH_LONG).show();
}
enter_text.setText(cr.getString(cr.getColumnIndex(getColumnNames.get(i))));
allEds.add(enter_text);
// allEds.get(i).setText();
linearlayout.addView(enter_text);
} //this might help you
现在,用户只能输入您为特定EditText
答案 1 :(得分:0)
您可以尝试使用InputFilter
//Allow only digits
InputFilter filter = new InputFilter() {
public CharSequence filter(CharSequence text, int start, int end,
Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
if (!Character.isDigit(text.charAt(i))) {
return "";
}
}
return null;
}
};
EditText edttext = (EditText)findViewById(R.id.edittext1);
edttext .setFilters(new InputFilter[]{filter});
这将只允许EditText中的数字。
参考this
答案 2 :(得分:0)
使用类似
的内容mEditText.setInputType(INPUT_TYPE)