studio programacion herramientas fundamentos con avanzado aplicaciones android loops arraylist tablelayout

programacion - manual de android en pdf



Imprima el contenido de ArrayList en Android TableLayout (3)

Tengo este ArrayList:

ArrayList<Double> debtList = datasource.debtList; ArrayList<Double> feeList = datasource.feeList;

¿Cómo imprimiría estas dos listas una al lado de la otra (el formato no importa) en una TableLayout en un ciclo? Aquí está el diseño:

TableLayout table = (TableLayout) findViewById(R.id.myTableLayout);


He encontrado la solución si el arrayLists no es del mismo tamaño .

Aquí está la lógica que he implementado:

Aquí está mi actividad:

public class TestStringActivity extends Activity { private ArrayList<String> input1 = new ArrayList<String>(); private ArrayList<String> input2 = new ArrayList<String>(); private TableRow row; private TableLayout inflate; private TextView txtcol1, txtcol2; /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //Populating the arrayList input1.add("1 "); input1.add("2 "); input1.add("3 "); input2.add(" Red"); input2.add(" Blue"); input2.add(" Green"); input2.add(" White"); inflate = (TableLayout) TestStringActivity.this .findViewById(R.id.mytable); for (int i = 0, j = 0; i < input1.size() || j < input2.size();) { row = new TableRow(TestStringActivity.this); txtcol1 = new TextView(TestStringActivity.this); if (input1.size() > i) { if ((input1.get(i) != null)) { txtcol1.setText(input1.get(i)); i++; } } else { txtcol1.setText(""); } row.addView(txtcol1); txtcol2 = new TextView(TestStringActivity.this); if ((input2.size() > j)) { if (input2.get(j) != null) { txtcol2.setText(input2.get(j)); j++; } } else { txtcol2.setText(""); } this.row.addView(txtcol2); inflate.addView(row); } } }

Aquí está mi Table Layout main.xml:

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

Espero que esto ayude si el tamaño de ArrayLists no es del mismo tamaño.


Ok, tienes dos listas de matriz listaDeDebía y ListaDeCarga, supongo que tanto la lista de arrays contiene la misma cantidad de elementos, ahora itera a través de esta lista, Crear Fila de Tabla añades dos textViews a la fila de la tabla y agrega tablerow a tableLayout, para que puedas hacer lo siguiente:

ArrayList<Double> debtList = datasource.debtList; ArrayList<Double> feeList = datasource.feeList; TableLayout table = (TableLayout) findViewById(R.id.myTableLayout); for(int i=0;i<debtList.size();i++) { TableRow row=new TableRow(this); double debt = debtList.get(i); double fee = feeList.get(i); TextView tvDebt=new TextView(this); tvDebt.setText(""+debt); TextView tvFee=new TextView(this); tvFee.setText(""+fee); row.addView(tvDebt); row.addView(tvFee); table.addView(row); }


Suponiendo que el número de entradas en ArrayList s es igual al número de celdas en TableLayout , puede intentar algo como esto:

int index = 0; TableLayout tableLayout = findViewById(R.id.table_layout); for(int n = 0, s = tableLayout.getChildCount(); n < s; ++n) { double debt = debtList.get(index); double fee = feeList.get(index); TableRow row = (TableRow) tableLayout.getChildAt(n); TextView cell = (TextView) row.findViewById(R.id.textview_cell); name.setText("debt = " + debt + ", fee = " + fee); index++; }