Как обновить всю строку вывода при изменении данного Ввода? - PullRequest
0 голосов
/ 23 сентября 2018

У меня проблемы с выходным экраном!

Когда я нажимаю кнопку Click с этими входами, экран вывода выглядит как прикрепленное изображение, что пока здорово!

With first inputs output comes like this

Но если я изменю свой ввод, программа даст новый ответ, добавив больше строк с предыдущими ответами!Я хочу, чтобы на экране отображались только новые ответы!Также без обновления ввода, если я нажимаю на кнопку, экран также добавляет новые строки!Я включил изображение этого также ..

Screen when input updated

Я использовал этот код, приведенный ниже,

clickbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                aI = Double.parseDouble(Ia.getText().toString());
                bI = Double.parseDouble(Ib.getText().toString());
                cI = Double.parseDouble(Ic.getText().toString());
                bisection();
            }
        });

private void bisection() {

        if ((f(aI) < 0 && f(bI) > 0) || (f(aI) > 0 && f(bI) < 0)) {
            for (int i = 0; i < cI; i++) {

                View tableRow = LayoutInflater.from(this).inflate(R.layout.table_item, null, false);
                TextView iteration = (TextView) tableRow.findViewById(R.id.index);
                TextView a = (TextView) tableRow.findViewById(R.id.a);
                TextView b = (TextView) tableRow.findViewById(R.id.b);
                TextView x = (TextView) tableRow.findViewById(R.id.x);
                TextView fx = (TextView) tableRow.findViewById(R.id.fx);

                double root = (aI+bI)/2;

                iteration.setText(" " + (i + 1));
                a.setText(Double.toString(aI));
                b.setText(Double.toString(bI));
                x.setText(Double.toString(root));
                fx.setText(Double.toString(f(root)));
                tableLayout.addView(tableRow);

                if(f(aI)*f(root) < 0){
                    bI = root;
                }else if (f(aI)*f(root) >0) {
                    aI = root;
                }
            }
        } else {
            Toast.makeText(getApplicationContext(), R.string.popUpMsg,Toast.LENGTH_SHORT).show();
        }
    }

    public static double f(double x){
        return ((Math.pow(x,3))-x-4);

    }

У меня уже естьобнаружил, почти та же проблема была решена в посте, ранее заданном кем-то другим, но я не смог исправить мой!Помоги мне.Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

В вашем методе прослушивания нажмите кнопку, добавьте следующую строку кода перед вызовом bisection ().

tableLayout.removeAllViews();

Когда вы нажмете кнопку, предыдущий вывод будет удален перед вычислением новых входных значений.

Ваш код будет выглядеть так:

clickbtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            aI = Double.parseDouble(Ia.getText().toString());
            bI = Double.parseDouble(Ib.getText().toString());
            cI = Double.parseDouble(Ic.getText().toString());
            tableLayout.removeAllViews();  // Remove previous output
            bisection();
        }
    });
0 голосов
/ 23 сентября 2018

первый путь;Вы должны использовать

removeAllViews();

Перед добавлением.Чтобы сделать это, вы должны иметь переменную макета вокруг.пример;

linearLayout.removeAllViews();

Другой способ - добавить текстовые представления в начале с VIEW.INVISIBLE или VIEW.GONE

. В зависимости от того, что вам подходит.

...