簡體   English   中英

如何為兩個不同的表分配不同的值而不為其他表編寫幾乎相同的代碼?

[英]How to assign different values to two different table without writing almost same code for other table?

我想創建兩個在第一行中具有不同標頭的表。 兩個表在標題行中有4列。 如何創建兩個具有不同標頭值的表而無需編寫兩次相同的代碼?

public void addHeaders(TableLayout t) {

    /* Create a TableRow dynamically */
    TableRow tr = new TableRow(this);
    tr.setBackgroundColor(GRAY);
    tr.setLayoutParams(new TableLayout.LayoutParams(
            TableLayout.LayoutParams.MATCH_PARENT,
            TableLayout.LayoutParams.WRAP_CONTENT));


    /* Creating a TextView to add to the row */
    TextView addressTV = new TextView(this);
    addressTV.setText("Address");
    addressTV.setTextColor(Color.BLACK);
    addressTV.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    addressTV.setGravity(Gravity.CENTER_HORIZONTAL);
    addressTV.setPadding(0, 7, 0, 7);
    addressTV.setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1.7f));
    tr.addView(addressTV);  // Adding textView to tablerow.

    /* Creating a TextView to add to the row */
    TextView typeTV = new TextView(this);
    typeTV.setText("Type");
    typeTV.setTextColor(Color.BLACK);
    typeTV.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    typeTV.setGravity(Gravity.CENTER_HORIZONTAL);
    typeTV.setPadding(0, 7, 0, 7);
    typeTV.setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f));
    tr.addView(typeTV);  // Adding textView to tablerow.

    /* Creating another textview */
    TextView amountTV = new TextView(this);
    amountTV.setText("Amount");
    amountTV.setTextColor(Color.BLACK);
    amountTV.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    amountTV.setGravity(Gravity.CENTER_HORIZONTAL);
    amountTV.setPadding(0, 7, 0, 7);
    amountTV.setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1.2f));
    tr.addView(amountTV); // Adding textView to tablerow.

    /* Creating another textview */
    TextView dateTV = new TextView(this);
    dateTV.setText("Date");
    dateTV.setTextColor(Color.BLACK);
    dateTV.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
    dateTV.setGravity(Gravity.CENTER_HORIZONTAL);
    dateTV.setPadding(0, 7, 0, 7);
    dateTV.setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1.5f));
    tr.addView(dateTV); // Adding textView to tablerow.

    // Add the TableRow to the TableLayout
    tl.addView(tr, new TableLayout.LayoutParams(
            LayoutParams.MATCH_PARENT,
            LayoutParams.WRAP_CONTENT));

}

嘗試將標題名稱作為輸入傳遞。 然后,您可以重復使用代碼來創建表對象,同時動態調整標題文本字段。

例如,這是一個簡單的例子,假設總是4列......

public void callingFunction() {
    TableLayout tl1 = // something;
    TableLayout tl2 = // something else;

    addHeaders(tl1, "Address", "Type", "Amount", "Date");
    addHeaders(tl2, "new", "strings", "for", "table");
}

public TableRow addHeaders(TableLayout tl, String ... names) {
 if (names.length != 4) throw new Exception("Unexpected number of table header names");

/* Create a TableRow dynamically */
TableRow tr = new TableRow(this);
tr.setBackgroundColor(GRAY);
tr.setLayoutParams(new TableLayout.LayoutParams(
        TableLayout.LayoutParams.MATCH_PARENT,
        TableLayout.LayoutParams.WRAP_CONTENT));


/* Creating a TextView to add to the row */
TextView addressTV = new TextView(this);
addressTV.setText(names[0]);
addressTV.setTextColor(Color.BLACK);
addressTV.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
addressTV.setGravity(Gravity.CENTER_HORIZONTAL);
addressTV.setPadding(0, 7, 0, 7);
addressTV.setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1.7f));
tr.addView(addressTV);  // Adding textView to tablerow.

/* Creating a TextView to add to the row */
TextView typeTV = new TextView(this);
typeTV.setText(names[1]);
typeTV.setTextColor(Color.BLACK);
typeTV.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
typeTV.setGravity(Gravity.CENTER_HORIZONTAL);
typeTV.setPadding(0, 7, 0, 7);
typeTV.setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f));
tr.addView(typeTV);  // Adding textView to tablerow.

/* Creating another textview */
TextView amountTV = new TextView(this);
amountTV.setText(names[2]);
amountTV.setTextColor(Color.BLACK);
amountTV.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
amountTV.setGravity(Gravity.CENTER_HORIZONTAL);
amountTV.setPadding(0, 7, 0, 7);
amountTV.setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1.2f));
tr.addView(amountTV); // Adding textView to tablerow.

/* Creating another textview */
TextView dateTV = new TextView(this);
dateTV.setText(names[3]);
dateTV.setTextColor(Color.BLACK);
dateTV.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
dateTV.setGravity(Gravity.CENTER_HORIZONTAL);
dateTV.setPadding(0, 7, 0, 7);
dateTV.setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1.5f));
tr.addView(dateTV); // Adding textView to tablerow.

// Add the TableRow to the TableLayout
tl.addView(tr, new TableLayout.LayoutParams(
        LayoutParams.MATCH_PARENT,
        LayoutParams.WRAP_CONTENT));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM