2016-03-24 44 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 –