Wie erhalte ich Werte aus einer dynamisch erstellten android TableRow?

Ich habe den folgenden Code zum Erstellen einesTableRow mit Inhalten dynamisch. Es funktioniert gut, aber ich möchte die Werte in die bekommenTableRow. Hier ist der Beispielcode (ich habe ihn von Google erhalten), er enthält zwei Textwerte in derTableRow. Wenn ich auf die Schaltfläche klickeTableRow an jeder Stelle gibt es den entsprechenden Wert in derTableRow (Ich wünsche etwas Ähnliches wie aListView).

All_CustomsActivity.java

<code>public class All_CustomsActivity extends Activity {

    String companies[] = { "Google", "Windows", "iPhone", "Nokia", "Samsung",
            "Google", "Windows", "iPhone", "Nokia", "Samsung", "Google",
            "Windows", "iPhone", "Nokia", "Samsung" };
    String os[] = { "Android", "Mango", "iOS", "Symbian", "Bada", "Android",
            "Mango", "iOS", "Symbian", "Bada", "Android", "Mango", "iOS",
            "Symbian", "Bada" };

    TableLayout tl;
    TableRow tr;
    TableRow mTable = null;
    TextView companyTV, valueTV;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tl = (TableLayout) findViewById(R.id.maintable);
        // addHeaders();
        addData();

    }

    /** This function add the headers to the table **/
    public void addHeaders() {

        /** Create a TableRow dynamically **/
        tr = new TableRow(this);
        tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));

        /** Creating a TextView to add to the row **/
        TextView companyTV = new TextView(this);
        companyTV.setText("Companies");
        companyTV.setTextColor(Color.GRAY);
        companyTV.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
        companyTV.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
        companyTV.setPadding(5, 5, 5, 0);
        tr.addView(companyTV); // Adding textView to tablerow.

        /** Creating another textview **/
        TextView valueTV = new TextView(this);
        valueTV.setText("Operating Systems");
        valueTV.setTextColor(Color.GRAY);
        valueTV.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
        valueTV.setPadding(5, 5, 5, 0);
        valueTV.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
        tr.addView(valueTV); // Adding textView to tablerow.

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

        // we are adding two textviews for the divider because we have two
        // columns
        tr = new TableRow(this);
        tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));

        /** Creating another textview **/
        TextView divider = new TextView(this);
        divider.setText("-----------------");
        divider.setTextColor(Color.GREEN);
        divider.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
        divider.setPadding(5, 0, 0, 0);
        divider.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
        tr.addView(divider); // Adding textView to tablerow.

        TextView divider2 = new TextView(this);
        divider2.setText("-------------------------");
        divider2.setTextColor(Color.GREEN);
        divider2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
        divider2.setPadding(5, 0, 0, 0);
        divider2.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
        tr.addView(divider2); // Adding textView to tablerow.

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

    /** This function add the data to the table **/
    public void addData() {

        for (int i = 0; i < companies.length; i++) {
            /** Create a TableRow dynamically **/
            tr = new TableRow(this);
            tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));
            // ImageView im = new ImageView(this);
            // im.setBackgroundResource(R.drawable.sample_image);
            // im.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
            // LayoutParams.WRAP_CONTENT));
            // tr.addView(im);
            /** Creating a TextView to add to the row **/
            companyTV = new TextView(this);
            companyTV.setText(companies[i]);
            companyTV.setTextColor(Color.RED);
            companyTV.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
            companyTV.setLayoutParams(new LayoutParams(
                    LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
            companyTV.setPadding(5, 5, 5, 5);
            tr.addView(companyTV); // Adding textView to tablerow.

            /** Creating another textview **/
            valueTV = new TextView(this);
            valueTV.setText(os[i]);
            valueTV.setTextColor(Color.GREEN);
            valueTV.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));
            valueTV.setPadding(5, 5, 5, 5);
            valueTV.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
            tr.addView(valueTV); // Adding textView to tablerow.

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

            // tr.setOnClickListener(new View.OnClickListener() {
            // public void onClick(View view) {
            // view.setBackgroundColor(Color.DKGRAY);
            // }
            // });
            //
            // tr.setOnLongClickListener(new View.OnLongClickListener() {
            // public boolean onLongClick(View v) {
            // mTable = (TableRow) v; // assign selected TableRow gobally
            // openContextMenu(v);
            // return true;
            // }
            // });

        }
    }

    // @Override
    // public void onCreateContextMenu(ContextMenu menu, View v,
    // ContextMenu.ContextMenuInfo menuInfo) {
    // super.onCreateContextMenu(menu, v, menuInfo);
    // menu.add(0, v.getId(), 0, "Do YourStuff");
    //
    // }
    //
    // @Override
    // public boolean onContextItemSelected(MenuItem item) {
    // int ccount = (mTable).getChildCount();
    // String[] str = new String[ccount];
    // for (int i = 0; i < ccount; i++) {
    // TextView tv = (TextView) (((TableRow) mTable)).getChildAt(i);
    // str[i] = tv.getText().toString(); // set selected text data into the
    // // String array
    // }
    // Toast.makeText(All_CustomsActivity.this, Arrays.toString(str), 2)
    // .show();
    // return true;
    // }

}
</code>

main.xml

<code><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <ScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scrollbars="none" >

        <TableLayout
            android:id="@+id/maintable"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:stretchColumns="0,1" >
        </TableLayout>
    </ScrollView>

</LinearLayout>
</code>

Im obigen Code sind einige Zeilen kommentiert. Diese Zeilen sind das, was ich bereits versucht habe, um die Zeilenwerte zu erhalten, aber es ist fehlgeschlagen. Kann mir jemand dabei helfen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage