【问题标题】:Extract data from tablelayout to array and pass to server.(Android)从表格布局中提取数据到数组并传递给服务器。(Android)
【发布时间】:2017-05-17 16:59:30
【问题描述】:

在我的应用程序中,我想暂时将数据添加到表布局中动态创建的表中,并通过 volley 将多行数据传递给 php mysql。 我不知道如何将动态表数据的值传递给数组..我可以在网站上使用 jQuery..通过这段代码。

var myTableArray = [];
$("table#myTable tr").each(function() { 
var arrayOfThisRow = [];
var tableData = $(this).find('td');
if (tableData.length > 0) {
    tableData.each(function() { arrayOfThisRow.push($(this).text()); });
    myTableArray.push(arrayOfThisRow);}

在安卓中怎么做?

我的活动:

public class ArrayActivity extends AppCompatActivity {

EditText t1, t2,t3, t4;
Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_array);

    t1 = (EditText) findViewById(R.id.id_01);
    t2 = (EditText) findViewById(R.id.id_02);
    t3 = (EditText) findViewById(R.id.id_03);
    t4 = (EditText) findViewById(R.id.id_04);
    btn = (Button) findViewById(R.id.id_btn);
    final TextView textView = (TextView) findViewById(R.id.tv_101);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String s1, s2, s3, s4;
            s1 = t1.getText().toString();
            s2 = t2.getText().toString();
            s3 = t3.getText().toString();
            s4 = t4.getText().toString();

            TableLayout tableLayout = (TableLayout) findViewById(R.id.up_table);
            TableRow row = new TableRow(ArrayActivity.this);
            TextView t1v = new TextView(ArrayActivity.this);
            t1v.setText(s1);
            t1v.setGravity(Gravity.CENTER);
            t1v.setBackgroundResource(R.drawable.row_border);
            row.addView(t1v);
            TextView t2v = new TextView(ArrayActivity.this);
            t2v.setText(s2);
            t2v.setGravity(Gravity.CENTER);
            t2v.setBackgroundResource(R.drawable.row_border);
            row.addView(t2v);
            TextView t3v = new TextView(ArrayActivity.this);
            t3v.setText(s3);
            t3v.setGravity(Gravity.CENTER);
            t3v.setBackgroundResource(R.drawable.row_border);
            row.addView(t3v);
            TextView t4v = new TextView(ArrayActivity.this);
            t4v.setText(s4);
            t4v.setGravity(Gravity.CENTER);
            t4v.setBackgroundResource(R.drawable.row_border);
            row.addView(t4v);
            tableLayout.addView(row);                 


        }
    });
}
}

PHP 代码

<?php
$con = mysqli_connect('localhost', '******', '******', '******');
if ($con->connect_error) {
 die("Connection failed: " . $con->connect_error);
}

$myTableArray = $_REQUEST['myTableArray'];

 if(is_array($myTableArray)){

$aValues = array();
foreach ($myTableArray as $aRow) {
$aValues[] = "'" . implode("','", $aRow) . "'";
 }
$sValues = "(" . implode("), (", $aValues) . ")";

$sql = "INSERT INTO mess (name, goods, quantity, price, action) values $sValues";
}

if ($con->query($sql) == TRUE) {
echo "Dear User, Data Added Successfully!";
} else {
echo "Error: " . $sql . "<br>" . $con->error;
}

$con->close();

?>

【问题讨论】:

  • 澄清一下,您有一些 html 代码要解析成 Java 结构?你能提供一个输入的例子吗?
  • 已添加 Java 和 php 代码。

标签: android json multidimensional-array android-volley tablelayout


【解决方案1】:

让我们把它分成两部分,解析和动态创建表:

1) 对于解析,您可以使用 Java Pattern 或 String.find() 将数据格式化为有意义的数据结构(可能是二维字符串数组) - 有很多示例,因为我不确定输入是我无法为您提供具体信息。

2) 至于动态创建表,假设我们使用的是二维字符串数组:

private void updateTable(@NonNull TableLayout table, @NonNull ArrayList<ArrayList<String>> data) {

    // Just to be sure table is clean
    table.removeAllViews();

    for (ArrayList<String> row: data) {

        TableRow tableRow = new TableRow(table.getContext());
        tableRow.setLayoutParams(new TableLayout.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));

        for (String text: row) {
            TextView textView = new TextView(table.getContext());
            textView.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
            textView.setText(text);
            tableRow.addView(textView);
        }
        table.addView(tableRow);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    相关资源
    最近更新 更多