【问题标题】:I can't set array textview in same row programatically我无法以编程方式在同一行中设置数组 textview
【发布时间】:2018-08-30 05:42:43
【问题描述】:

我有一个字符串,逗号分隔,来自 mysql 数据库,我拆分成一个数组。 我的问题是,当我尝试以编程方式将它们放入 tablerow 时,它会在新行中显示每个拆分值。我想将它显示在 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);
            }

【问题讨论】:

    标签: android


    【解决方案1】:

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

    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 并使用这个订单会更好。

    【讨论】:

    • 好的,这正在工作。但是 .. 在 rowIndex 处不起作用。因为我要生成多行。
    • 您有想要添加到表格中的字符串列表吗?比你必须在代码上方创建一个新的 for 循环(参见我编辑的示例)
    • 还是不行。我的字符串对于每个订单都是不同的。示例:“2,产品,100 片,50 欧元”。而且我有多个产品的相同字符串。例如:“2,产品,100 片,50 欧元,3,产品,100 片,75 欧元”。所以我希望在每种货币之后都在一个新行中
    • 你必须先格式化你的字符串,以匹配你想要的结果。之后,您可以将它们添加到表格中。
    • 我不知道如何格式化。我想用for循环在货币之后创建新字符串,但我现在不知道如何:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 2011-12-16
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 2018-08-12
    • 2018-02-02
    相关资源
    最近更新 更多