Android table 布局

Android table layout

在我的应用程序中,我在代码中设置每个 table 行。

行设置代码

            final TableRow row = new TableRow(context);
            row.setBackgroundResource(R.drawable.layer_nw);
            row.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, 150));
            row.setMinimumHeight(100);
            //tr.addView(view);
            String[] colText = {"" + outlet_name, "" + outlet_qty, "" + outlet_price, "" + outlet_tot};
            for (String text : colText) {
                TextView tv = new TextView(this);
                //EditText ev=new EditText(this);

                tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,150));
                tv.setGravity(Gravity.CENTER);
                tv.setTextSize(14);

            //    tv.setTextColor(Integer.parseInt("#D3D3D3"));

                tv.setText(text);

                row.addView(tv);

            }
            tableLayout.addView(row);

在这一行中,我想要第二个单元格,即 'outlet_qty' 作为编辑文本,所有其他作为 'colText' 数组变量的 textview.each 从 Sqlite 获取其值。 有什么办法可以做到这一点?请帮忙

试试这个。在迭代列的 for 循环中,我们检查列是否为 outlet_qty。如果我们匹配 outlet_qty 列,我们将添加一个编辑文本。对于所有其他内容,我们添加文本视图。

            final TableRow row = new TableRow(context);
            row.setBackgroundResource(R.drawable.layer_nw);
            row.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, 150));
            row.setMinimumHeight(100);
            //tr.addView(view);
            String[] colText = {"" + outlet_name, "" + outlet_qty, "" + outlet_price, "" + outlet_tot};
            // iterate over colunms
            for (String text : colText) {

                // add edit text for outlet_qty column
                if(text.equals(outlet_qty))
                {
                    EditText editText = new EditText(this);
                    // do stuff with the edit text like prefilling data etc
                    row.addView(tv);
                }
                // for all others we add text views
                else
                {
                TextView tv = new TextView(this);
                //EditText ev=new EditText(this);

                tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,150));
                tv.setGravity(Gravity.CENTER);
                tv.setTextSize(14);

            //    tv.setTextColor(Integer.parseInt("#D3D3D3"));

                tv.setText(text);

                row.addView(tv);
                }

            }
            tableLayout.addView(row);

这都是为了管理特定列号的TextView和EditText。您可以像管理从 sqlite 中输入的数据一样管理数据。

final TableRow row = new TableRow(context);
        row.setBackgroundResource(R.drawable.layer_nw);
        row.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, 150));
        row.setMinimumHeight(100);
        //tr.addView(view);
        String[] colText = {"" + outlet_name, "" + outlet_qty, "" + outlet_price, "" + outlet_tot};
        for (int i = 0; i < colText.length; i++) {
            EditText ev = new EditText(this);
            TextView tv = new TextView(this);
            if (i == 1) {//For outlet_qty
                ev.setId(i);
                ev.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, 150));
                ev.setGravity(Gravity.CENTER);
                ev.setTextSize(14);
                //    ev.setTextColor(Integer.parseInt("#D3D3D3"));
                ev.setText(colText[i]);
                ev.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) {
                        if (s.length() > 0) {
                            ((TextView) row.findViewById(Integer.valueOf(3))).setText(s.toString().trim());
                        } else {
                            ((TextView) row.findViewById(Integer.valueOf(3))).setText("");
                        }
                    }

                    @Override
                    public void afterTextChanged(Editable s) {

                    }
                });
                row.addView(ev);
            } else {
                tv.setId(i);
                tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, 150));
                tv.setGravity(Gravity.CENTER);
                tv.setTextSize(14);
                //    tv.setTextColor(Integer.parseInt("#D3D3D3"));
                tv.setText(colText[i]);
                row.addView(tv);
            }
        }
        tableLayout.addView(row);