根据用户输入更新文本视图

时间:2011-08-14 21:16:07

标签: java android textview user-input

我有多个SeekBars用户可以操作来更改文本字段中的各种值,我有这些值,所以他们会实时更新。

我无法弄清楚如何获取这些数字(我需要像添加,乘法等那样进行基本数学运算)到同时更新的新文本视图中。

我会尝试发布一些代码,但我是java,android甚至是这个网站的新手,所以当没有任何意义时不要感到惊讶。 :-P

跳到(我认为)是重要的代码。

    SeekBar sbc = (SeekBar) findViewById(R.id.seekBar4);
    final TextView tvc = (TextView) findViewById(R.id.textView10);
    sbc.setMax(200);
    sbc.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            tvc.setText(String.valueOf(progress-100));
        }

    });

    //set up chance bar and text

    TextView tvp = (TextView) findViewById(R.id.textView14);
    tvp.setText(tvc.getText().toString());

正如你所看到的那样,我的搜索栏从-100到100 ......非常自豪那个(我花了很多时间去谷歌/研究lol)

还有tvp.setText(tvc.getText()。toString());只能拉出tvc的初始值

提前致谢,与此同时我会继续玩它。

1 个答案:

答案 0 :(得分:1)

我不确定你为什么设置tvp和tvc显示相同的值,但如果你想让tvp动态更新以匹配tvc的值,那么你需要在Listener中移动你的最后一段代码,即:

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
        boolean fromUser) {
    tvc.setText(String.valueOf(progress-100));
    TextView tvp = (TextView) findViewById(R.id.textView14);
    tvp.setText(tvc.getText().toString());
}

或者更干净:

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
        boolean fromUser) {
    String progress = String.valueOf(progress-100)
    tvc.setText(progress);
    tvp.setText(progress); // move the findViewById outside this method, and put it with tvc
}

或者,如果您在更改tvc中的文本时遇到困难,这可能是因为您已将其声明为final。如果是这种情况,请尝试将tvc作为您班级的非最终成员变量,即将其放在任何方法之外,在类的开头,如下所示:

public class MyClass extends Activity {

    private TextView tvc;
    ...

修改

感谢额外的信息!尝试这样的事情:

public class MyClass extends Activity {

    private TextView tvc;
    private TextView tvd;
    private TextView tvp;

    ... // somewhere here you need to get the TextViews from the Layout
    ... // missing out lots of code here and skipping straight to onProgressChanged for first seekBar

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress,
            boolean fromUser) {
        String progress1 = String.valueOf(progress-100)
        tvc.setText(progress1);
        String progress2 = tvd.getText().toString;
        String result = resultOfSomeCalculationUsingTheInputs();
        tvp.setText(result);
    }
}

在你的其他SeekBar中你会做类似的事情(设置tvd的文本,获取tvc的文本,执行计算,将结果设置为tvp的文本)