如何验证动态创建的编辑文本

时间:2014-08-04 08:54:41

标签: android

我根据数据库表中的记录在我的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    

3 个答案:

答案 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)