2016-03-24 41 views
1

我需要此代碼的幫助,它不工作。當文字改變時,我想將boolean的值更改爲true。任何幫助將不勝感激。編輯文本變量變化的監聽器

public class Atiras { 

    public void atirasfigyelo(final EditText valtozo,Cursor sql,String SQLoszlop,final boolean ell){ 

     valtozo.setText("" + sql.getInt(sql.getColumnIndex(SQLoszlop))); 

     ell=false; 
     valtozo.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       ell=true; 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       valtozo.setBackgroundColor(Color.RED); 
      } 

     }); 
    } 
} 
+0

這是您的完整碼?如果沒有,請上傳您的完整代碼! – Jois

回答

0

您嘗試創建JavaBean或POJO而不是此參數列表。然後你可以改變'ell'變量。光標對象必須關閉。 首先你做查詢然後將記錄轉換爲對象。然後你製作你想要的東西。

0

此代碼不會因爲在你的工作職能:
public void atirasfigyelo(final EditText valtozo,Cursor sql,String SQLoszlop,final boolean ell){

你正在ellfinal boolean ell最後一個變量。

您可以創建一個類級別的變量,你可以從裏面annonimus類象下面這樣改變:

public class Atiras { 
    private boolean isTrue; 
    public void atirasfigyelo(final EditText valtozo, Cursor sql, String SQLoszlop, final boolean ell) {  
     valtozo.setText("" + sql.getInt(sql.getColumnIndex(SQLoszlop))); 

     isTrue= false; 
     valtozo.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) {  
      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) {  
       isTrue= true;  
      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       valtozo.setBackgroundColor(Color.RED);  
      }  
     });  
    }  
} 

它會工作,因爲6.3. Scope of a Declaration

局部變量聲明塊中的範圍(第14.4節)是聲明出現的塊的其餘部分,從其自己的初始化程序開始,並在局部變量聲明語句中包含右側的任何其他聲明符。

+0

當我刪除「最終」---->在文本改變..... --->變量'埃爾'從內部類訪問,需要聲明最後:(請幫我 –

+0

是的,我知道請檢查上面的代碼 –

+0

我必須將{ell}值更改爲True –