编辑文本的变量改变了监听器

时间:2016-03-24 08:10:05

标签: java android addtextchangedlistener

我需要这段代码的帮助,它不起作用。我希望在文本更改时将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);
            }

        });
    }
}

2 个答案:

答案 0 :(得分:0)

此代码无效,因为在您的功能中:
 public void atirasfigyelo(final EditText valtozo,Cursor sql,String SQLoszlop,final boolean ell){

您将ell作为final 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节)是声明出现的块的其余部分,从其自己的初始化器开始,并包括局部变量声明语句中右侧的任何其他声明符。 / p>

答案 1 :(得分:0)

您尝试创建JavaBean或POJO而不是此参数列表。然后你可以改变'ell'变量。并且Cursor对象必须关闭。 首先,您执行查询,然后将记录转换为对象。然后你把对象做成你想要的。