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?