Dynami c Таблица содержимого таблицы строки не работает - PullRequest
0 голосов
/ 02 апреля 2020

Привет, в приведенном ниже коде я реализую динамический c макет таблицы. динамически добавляемые имена строк в таблицах также добавляются динамически.

при попытке добавления содержимого в строки. но он выбрасывает индекс массива исключений из связанного исключения.

может мне помочь любой, где я это сделал ошибка

    java.lang.ArrayIndexOutOfBoundsException: length=3; index=3

код

 String productValues = listSalesStageOpportunity.get(position).getProductValue();
TableLayout stk = (TableLayout) customView.findViewById(R.id.tables);
        TableRow tbrow0 = new TableRow(getContext());
        TextView tv0 = new TextView(getContext());
        tv0.setText(" Sl.No ");
        tv0.setTextColor(Color.WHITE);
        tbrow0.addView(tv0);
        TextView tv1 = new TextView(getContext());
        tv1.setText(" Item Name ");
        tv1.setTextColor(Color.WHITE);
        tbrow0.addView(tv1);
        TextView tv2 = new TextView(getContext());
        tv2.setText(" Unit Price ");
        tv2.setTextColor(Color.WHITE);
        tbrow0.addView(tv2);
        TextView tv3 = new TextView(getContext());
        tv3.setText(" Total ");
        tv3.setTextColor(Color.WHITE);
        tbrow0.addView(tv3);
        stk.addView(tbrow0);
        for (int i = 0; i < productValues.length(); i++) {
            TableRow tbrow = new TableRow(getContext());
            TextView t1v = new TextView(getContext());
            String[] namesList = productValues.split(",");
            t1v.setText(namesList[i]);//error
            t1v.setTextColor(Color.WHITE);
            t1v.setGravity(Gravity.CENTER);
            tbrow.addView(t1v);
stk.addView(tbrow);
        }

1 Ответ

1 голос
/ 02 апреля 2020

ProductValues.length () возвращает недоступное значение из 4 (из 13).

Если имеется только 3 элемента (falco, cs30, bs), максимальное значение для i равно 2, но i равно 3 в соответствии с исключением.

Если productValues ​​= "falco, cs30, bs". Вызов productValues.length () возвращает 13. В вашем массиве нет 13 элементов.

Вы должны переместить метод split вверх до значения для l oop и использовать его результат в качестве l oop итератор.

String[] namesList = productValues.split(",");
for (int i = 0; i < namesList.length(); i++) 
{
        TableRow tbrow = new TableRow(getContext());
        TextView t1v = new TextView(getContext());
        t1v.setText(namesList[i]);
        t1v.setTextColor(Color.WHITE);
        t1v.setGravity(Gravity.CENTER);
        tbrow.addView(t1v);
        stk.addView(tbrow);
}
...