不断更新Android文本

时间:2015-01-23 11:51:46

标签: java android

以下是我的文本字段,单选按钮等:

et1             =    Edit Text Field
radioButton1    =    Radio Button (part of group1)
radioButton2    =    Radio Button (part of group1)
textView2       =    Text View

我想要的是不断更新textView2,具体取决于et1中的内容和选择的单选按钮。

我在想这个问题可能就是使用convertUp / convertDown方法。它仅在实际单击单选按钮时运行,而不是选中。

如果这是问题,有人可以告诉我该怎么做。如果不是,有人可以向我解释我哪里出错了。我会很感激。提前谢谢。

这是我使用的代码:

("标记"是将在textView2中更新的变量和"值"是"标记"依赖的变量 - 如方法中所示)

public class MainActivity extends ActionBarActivity {

    double mark = 0;
    double value = 10;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        EditText text = (EditText)findViewById(R.id.et1);

        try{
            value = Double.parseDouble(text.getText().toString());
        } catch (final NumberFormatException e) {
            value = 1.0;
        }

        OnClickListener listener1 = new OnClickListener(){

            public void onClick(View v) {

                mark = convertUp(value);    
            }        
        };

        OnClickListener listener2 = new OnClickListener(){

            public void onClick(View v) {

                mark = convertDown(value);    
            }     
        };

        RadioButton rb1 = (RadioButton) findViewById(R.id.radioButton1);
        rb1.setOnClickListener(listener1);

        RadioButton rb2 = (RadioButton) findViewById(R.id.radioButton2);
        rb2.setOnClickListener(listener2);

        TextView tv1 = (TextView)findViewById(R.id.textView2);

        tv1.setText(""+mark);    

    }

2 个答案:

答案 0 :(得分:1)

或尝试tv1.setText("" + mark);在OnClickListener listener1和OnClickListener listener2

答案 1 :(得分:1)

您需要做几件事才能不断更新。

首先,TextWatcher需要EditText,每次输入新信时都会修改textView

et1.addTextChangedListener(new TextWatcher() {
  @Override
  public void onTextChanged(CharSequence s, int start, int before, int count) { 
      try{
         value = Double.parseDouble(text.getText().toString());
      } catch (final NumberFormatException e) {
         value = 1.0;
      }

      if(rb1.isChecked()){ mark = convertUp(value);  }
      else{ mark = convertDown(value); }

      tv1.setText(""+mark); //will update ur tV every time you input a lleter
  }

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

  @Override
  public void afterTextChanged(Editable s) { }
});

如果您更改textView

,还需要执行此操作来修改radioButton
OnClickListener listener1 = new OnClickListener(){

        public void onClick(View v) {
            try{
              value = Double.parseDouble(text.getText().toString());
            } catch (final NumberFormatException e) {
              value = 1.0;
            }

            mark = convertUp(value);  

            tv1.setText(""+mark);  
        }        
    };

    OnClickListener listener2 = new OnClickListener(){

        public void onClick(View v) {
            try{
              value = Double.parseDouble(text.getText().toString());
            } catch (final NumberFormatException e) {
              value = 1.0;
            }

            mark = convertDown(value);   

            tv1.setText(""+mark); 
        }     
    };

希望它有所帮助!祝你好运!