2012-02-01 41 views
2

我需要限制的機器人EditText上逗號後六個字符,我應該能夠增加人物bfor逗號......每個逗號後限制六個字符中的Android

即3000,898989,898345 ... 3000可以是30000或300000 ...無限,但逗號後面的字符應該是固定的六...每個之後

逗號只有六個字符在編輯文本輸入canbe ...

怎麼做呢?

我試圖用下列

public class CustomEditTextActivity extends Activity { 

EditText et; 
Context cn=null; 
int commacount=0; 
String aftercomma; 
boolean flag=false; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
          cn=this; 
    et=(EditText)findViewById(R.id.editText1); 

    // Listener for edit text text change 
    et.addTextChangedListener(filterTextWatcher); 


} 

private TextWatcher filterTextWatcher = new TextWatcher() { 

    public void afterTextChanged(Editable arg0) { 
     // TODO Auto-generated method stub 

     System.out.println("Inside afterTextChanged() method"); 



    } 

    public void beforeTextChanged(CharSequence s, int start, int count, 
      int after) { 

     System.out.println("Inside beforeTextChanged() method"); 


    } 

    public void onTextChanged(CharSequence s, int start, int before, 
      int count) { 
         flag=false; 
     commacount=0; 
     String getDataFromeditxt = s.toString(); 
       int comma = getDataFromeditxt.indexOf(','); 
       String bforcomma = getDataFromeditxt; 
       if (comma != -1) 
       { 
        bforcomma = getDataFromeditxt.substring(0, comma); 
       } 



           // Checking for , in the data and setting its position 
           for (int i = 0; i < getDataFromeditxt.length(); i++) { 
            char c = getDataFromeditxt.charAt(i); 
            if(flag){ 
             aftercomma=new StringBuilder().append(c).toString(); 
             int maxLength =bforcomma.length() +6+commacount; 
             InputFilter[] FilterArray = new InputFilter[1]; 
             FilterArray[0] = new InputFilter.LengthFilter(maxLength); 
             et.setFilters(FilterArray); 
             System.out.println(aftercomma); 

            } 
            if (c == ',') { 
             commacount=commacount+1 ; 
             flag=true; 
            } 

           } 

    } 

}; 

}

在上面的代碼中的問題是,一旦最大長度被設定我不能鍵入點兒...任何溶液??

+0

這可能不是問題的實際來源,但是'bforcomma.length()+ 6 + commacount;'將使你的第一個逗號後面添加最多6(非逗號)字符,即使如果增加了更多的逗號。不應該是'bforcomma.length()+(6 + 1)* commacount'嗎? – Thomas 2012-02-01 12:12:34

+0

抱歉其實這是我的代碼,我寫了...我採取的條件會發生什麼時,一個逗號來..我knw這是不正確的......我只是發佈我做了......在這種情況下,一旦maxlength設置我不能添加數據bfor逗號 – Rockin 2012-02-01 12:20:32

+0

我不知道如果我得到這個問題。 (1)是否想要在第一個逗號出現後驗證該字符串是否有逗號以6個字符間隔,或者(2)是否要在添加第一個逗號後自動插入逗號? – Nishant 2012-02-01 12:40:50

回答

0
Use pattern matching in java. Replace str with text from editext. 
String result=""; 
String str= "300066666666666666666,898989,898345,000000,111111,333333";//editext.getText().toString(); 
String regex ="(^[0-9]+)([,]+[0-9]{6})+$"; 
Matcher matcher = Pattern.compile(regex).matcher(str); 
if (matcher.find()) 
{ 
result = matcher.group(); 
System.out.println("number="+result);    
} 
else 
{ 
    System.out.println("no match found"); 
} 
output 
number=300066666666666666666,898989,898345,000000,111111,333333 
相關問題