Я хочу добавить числа во всех столбцах в динамическом добавленном табличном представлении - PullRequest
0 голосов
/ 01 ноября 2018

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

 et8 = new EditText(this);
        et9 = new EditText(this);
        et10 = new EditText(this);
        et7.setText("");
        et8.setText("");
        et9.setText("");
        et10.setText("");
        et6.setBackgroundResource(R.drawable.edittext3);
        et6.setGravity(Gravity.CENTER);
        et6.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
        et7.setBackgroundResource(R.drawable.edittext3);
        et7.setGravity(Gravity.CENTER);
        et7.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
        et8.setBackgroundResource(R.drawable.edittext3);
        et8.setGravity(Gravity.CENTER);
        et8.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
        et9.setBackgroundResource(R.drawable.edittext3);
        et9.setGravity(Gravity.CENTER);
        et9.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
        et10.setBackgroundResource(R.drawable.edittext3);
        et10.setGravity(Gravity.CENTER);
        et10.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
        tr1.addView(et6);
        tr1.addView(et7);
        tr1.addView(et8);
        tr1.addView(et9);
        tr1.addView(et10);
        t1.addView(tr1);
        try {
            for (i = 0; i <= t1.getChildCount()-1; i++)
                qty.setText(String.valueOf(i));


        }
        catch (Exception e)
        {
            Toast.makeText(this, "failed to add qty", Toast.LENGTH_SHORT).show();
        }

        et9.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) {
                try {
                    int i, j;
                    int mul;
                    i = Integer.parseInt(et8.getText().toString());
                    j = Integer.parseInt(et9.getText().toString());
                    mul = i * j;

                    et10.setText("" + (Integer.toString(mul)));

                }
                catch (Exception e)
                {
                    Toast.makeText(getApplicationContext(), "please calculate before adding row", Toast.LENGTH_SHORT).show();
                }

            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });


        final Snackbar snbr = Snackbar.make(view,"Row added",Snackbar.LENGTH_SHORT);
        snbr.getView().setBackgroundColor(ContextCompat.getColor(view.getContext(),R.color.colorsnac1));
        snbr.setActionTextColor(getResources().getColor(R.color.snactxt));
        snbr.show();
        snbr.setAction("Dismiss", new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                t1.removeView(tr1);
            }
        });



    }
}

Image Here

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Есть много способов сделать это

1) один способ - при добавлении представления к идентификатору или индексу набора группы просмотра

int tablerow = 1;

.....
tr1.setId(tablerow);

используйте этот идентификатор и значение mul store в hashmap используйте дополнительную переменную для хранения значения 'mul' в цикле

при удалении представления в использовании идентификатора представления, который является индексом Вы можете уменьшить общую сумму, выполнив поиск по индексу представления в hashmap

0 голосов
/ 01 ноября 2018

Для начала, вы действительно должны использовать RecyclerView, а не пытаться вставлять каждую строку вручную. Затем вы можете создать глобальную переменную ArrayList, которая хранит цены в столбце Price. Каждый ценовой EditText получает TextChangedListener, который обновляет свой соответствующий элемент в ArrayList. TextChangedListeners также перебирают ArrayList, проверяют, является ли каждое значение числом, и, если да, добавляют его к итоговой цене, а затем отображают вновь вычисленную итоговую сумму.

...