【问题标题】:dynamic table layout table row content is not working [closed]动态表格布局表格行内容不起作用[关闭]
【发布时间】:2020-04-02 06:24:25
【问题描述】:

您好,在下面的代码中,我正在实现动态表格布局。动态添加的表行名称也动态添加。

尝试将内容添加到行中。但它抛出异常数组索引超出范围异常。

谁能帮我看看哪里出错了

    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);
        }

【问题讨论】:

  • split 方法返回了一个长度为 3 的数组,您正在尝试访问不存在的第 4 个元素。检查所有“productValues”是否被正确拆分并生成一个包含 4 个项目的数组。
  • @InkArcher productValues 包含 3 个项目,例如 falco、cs30、bs 这些是元素

标签: java android android-tablelayout


【解决方案1】:

ProductValues.length() 返回一个不可达到的值 4(共 13 个)。

如果只有 3 个项目 (falco,cs30,bs),则 i 的最大值为 2,但根据例外情况,i 等于 3。

如果 productValues = "falco,cs30,bs"。调用 productValues.length() 返回 13。您的数组没有 13 个项目。

您应该将 split 方法向上移动到 for 循环之前,并将其结果用作循环迭代器。

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);
}

【讨论】:

  • 我有一个疑问
  • 这个问题会是什么?
  • 就像我有另一个列表一样
猜你喜欢
  • 2014-12-19
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
  • 2014-05-13
相关资源
最近更新 更多