我无法以编程方式在同一行中设置数组textview

时间:2018-08-30 05:42:43

标签: android

我有一个字符串,用逗号分隔,与我拆分成数组的mysql数据库有关。 我的问题是,当我尝试以编程方式将它们放入表格行时,它将在新行中显示每个拆分值。我想在4列的同一行中显示它。 这是我的代码:

String currentString = Order_list;
            String[] separated = currentString.split(",");

            TableLayout secondTbl = findViewById(R.id.secondTable);

            for(int i=0;i<separated.length;i++){
                TableRow row= new TableRow(getApplicationContext());
                TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT);
                row.setLayoutParams(lp);
                row.setBackgroundResource(R.drawable.row_drawable);
                txtOrdprod = new TextView(getApplicationContext());
                row.addView(txtOrdprod);
                TableRow.LayoutParams params = (TableRow.LayoutParams) txtOrdprod.getLayoutParams();
                params.leftMargin = 18;
                params.rightMargin = 10;
                params.topMargin = 10;
                txtOrdprod.setLayoutParams(params);
                txtOrdprod.setTextSize(TypedValue.COMPLEX_UNIT_SP,22);
                txtOrdprod.setTextColor(Color.BLACK);
                txtOrdprod.setTypeface(null, Typeface.BOLD);
                txtOrdprod.setText(separated[i]);
                secondTbl.addView(row,i);
            }

1 个答案:

答案 0 :(得分:0)

您必须创建一行,然后将您的列(分隔的字符串)放入该行中。例如:

String orders = "2, Product, 100 Tablets, 50 Eur, 3, Product, 100 Tablets, 75 Eur";

int k = 0;
int startPoint = 0;
List<String> orderList = new ArrayList<>();
for(int i = 0; i < orders.length(); i++)
{
    if(orders.charAt(i) == ',')
    {
        k++;
        if(k == 4)
        {
            String ab = orders.substring(startPoint, i);
            orderList.add(ab);
            startPoint = i + 1;
            k = 0;
        }
    }
}

TableLayout secondTbl = findViewById(R.id.secondTable);

int rowIndex = 0;
for(String order : orderList)
{
    String[] separated = order.split(",");

    TableRow row = new TableRow(getApplicationContext());
    TableRow.LayoutParams lp = new 
    TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, 
    TableRow.LayoutParams.WRAP_CONTENT);
    row.setLayoutParams(lp);
    row.setBackgroundResource(R.drawable.row_drawable);
    secondTbl.addView(row, rowIndex);

    for(int i = 0; i < separated.length; i++)
    {
        txtOrdprod = new TextView(getApplicationContext());
        row.addView(txtOrdprod);
        TableRow.LayoutParams params = (TableRow.LayoutParams) 
        txtOrdprod.getLayoutParams();
        params.leftMargin = 18;
        params.rightMargin = 10;
        params.topMargin = 10;
        txtOrdprod.setLayoutParams(params);
        txtOrdprod.setTextSize(TypedValue.COMPLEX_UNIT_SP,22);
        txtOrdprod.setTextColor(Color.BLACK);
        txtOrdprod.setTypeface(null, Typeface.BOLD);
        txtOrdprod.setText(separated[i]);
    }

    rowIndex++;
}

但是请记住,订单字符串的格式必须与示例中的on相同,否则它将无法正常工作。如果您有一个用于订单的POJO并使用该订单,那就更好了。