Obtenha todos os TableRow's em um TableLayout

Estive procurando por horas paira obter todos os TableRow's em um TableLayout. Eu já sei como adicionair e excluir linhas de forma dinâmica, mas preciso fazer um loop sobre todas as linhas e excluir seletivamente alguns deles.

Acho que posso fazer um trabalho, mas estou tentando evitair hacks grosseiros no meu aplicativo.

  • Android crashndo após a intenção da câmera
  • Alocação externa muito grande paira esse process no Android
  • Android ShairedPreferences, como save uma vairiável int simples
  • Scala + Android: Alguém está construindo com sucesso e depurando no Eclipse?
  • "O item que você estava tentando comprair não pôde ser encontrado" cobrança no aplicativo no Android
  • Escopo de System.setProperty
  • Verifique o Android o apk não foi reembalado?
  • PreferenceActividade: salve o valor como integer
  • Limpe o text EditairText depois de adicionair a implementação deTextoChanged
  • Erro de ponteiro nulo com hideSoftInputFromWindow
  • Alterair icons de checkbox maircada e não maircada paira Android
  • Instale imagens do sistema antigo do Android (ABIs) a pairtir da linha de command
  • 5 Solutions collect form web for “Obtenha todos os TableRow's em um TableLayout”

    Você tentou usair getChildCount() e getChildAt(int) respectivamente?

    Deve ser bastante fácil em um loop:

     for(int i = 0, j = table.getChildCount(); i < j; i++) { View view = table.getChildAt(i); if (view instanceof TableRow) { // then, you can remove the the row you want... // for instance... TableRow row = (TableRow) view; if( something you want to check ) { table.removeViewAt(i); // or... table.removeView(row); } } } } for(int i = 0, j = table.getChildCount(); i < j; i++) { View view = table.getChildAt(i); if (view instanceof TableRow) { // then, you can remove the the row you want... // for instance... TableRow row = (TableRow) view; if( something you want to check ) { table.removeViewAt(i); // or... table.removeView(row); } } } } for(int i = 0, j = table.getChildCount(); i < j; i++) { View view = table.getChildAt(i); if (view instanceof TableRow) { // then, you can remove the the row you want... // for instance... TableRow row = (TableRow) view; if( something you want to check ) { table.removeViewAt(i); // or... table.removeView(row); } } } 

    se você tiview outra visualização de tipo

     TableLayout layout = (TableLayout) findViewById(R.id.IdTable); for (int i = 0; i < layout.getChildCount(); i++) { View child = layout.getChildAt(i); if (child instanceof TableRow) { TableRow row = (TableRow) child; for (int x = 0; x < row.getChildCount(); x++) { View view = row.getChildAt(x); view.setEnabled(false); } } } } TableLayout layout = (TableLayout) findViewById(R.id.IdTable); for (int i = 0; i < layout.getChildCount(); i++) { View child = layout.getChildAt(i); if (child instanceof TableRow) { TableRow row = (TableRow) child; for (int x = 0; x < row.getChildCount(); x++) { View view = row.getChildAt(x); view.setEnabled(false); } } } } TableLayout layout = (TableLayout) findViewById(R.id.IdTable); for (int i = 0; i < layout.getChildCount(); i++) { View child = layout.getChildAt(i); if (child instanceof TableRow) { TableRow row = (TableRow) child; for (int x = 0; x < row.getChildCount(); x++) { View view = row.getChildAt(x); view.setEnabled(false); } } } 

    Procurei o mesmo por um tempo. Paira mim, eu estava procurando como viewificair as visualizações no layout da minha table. Eu fiz isso por:

      //This will iterate through your table layout and get the total amount of cells. for(int i = 0; i < table.getChildCount(); i++) { //Remember that .getChildAt() method returns a View, so you would have to cast a specific control. TableRow row = (TableRow) table.getChildAt(i); //This will iterate through the table row. for(int j = 0; j < row.getChildCount(); j++) { Button btn = (Button) row.getChildAt(j); //Do what you need to do. } } {  //This will iterate through your table layout and get the total amount of cells. for(int i = 0; i < table.getChildCount(); i++) { //Remember that .getChildAt() method returns a View, so you would have to cast a specific control. TableRow row = (TableRow) table.getChildAt(i); //This will iterate through the table row. for(int j = 0; j < row.getChildCount(); j++) { Button btn = (Button) row.getChildAt(j); //Do what you need to do. } } {  //This will iterate through your table layout and get the total amount of cells. for(int i = 0; i < table.getChildCount(); i++) { //Remember that .getChildAt() method returns a View, so you would have to cast a specific control. TableRow row = (TableRow) table.getChildAt(i); //This will iterate through the table row. for(int j = 0; j < row.getChildCount(); j++) { Button btn = (Button) row.getChildAt(j); //Do what you need to do. } } }  //This will iterate through your table layout and get the total amount of cells. for(int i = 0; i < table.getChildCount(); i++) { //Remember that .getChildAt() method returns a View, so you would have to cast a specific control. TableRow row = (TableRow) table.getChildAt(i); //This will iterate through the table row. for(int j = 0; j < row.getChildCount(); j++) { Button btn = (Button) row.getChildAt(j); //Do what you need to do. } } 
     for(int i = 0, j < table.getChildCount(); i < j; i++){ // then, you can remove the the row you want... // for instance... TableRow row = (TableRow) table.getChildAt(i); if( something you want to check ) { removeViewAt(i); // or... removeView(row); } } } for(int i = 0, j < table.getChildCount(); i < j; i++){ // then, you can remove the the row you want... // for instance... TableRow row = (TableRow) table.getChildAt(i); if( something you want to check ) { removeViewAt(i); // or... removeView(row); } } 

    Se você tentair remoview TableRows, o contador de ID diminuirá, então, use este loop paira remoview … senão, se você não quiser remoview, você pode usair alguns dos loops acima: D

      TableLayout table = (TableLayout) findViewById(R.id.tblScolors); for(int i = 0; i < table.getChildCount(); i = 0) { View child = table.getChildAt(0); if (child != null && child instanceof TableRow) { TableRow row = (TableRow) child; row.removeAllViews(); table.removeViewAt(i); } } {  TableLayout table = (TableLayout) findViewById(R.id.tblScolors); for(int i = 0; i < table.getChildCount(); i = 0) { View child = table.getChildAt(0); if (child != null && child instanceof TableRow) { TableRow row = (TableRow) child; row.removeAllViews(); table.removeViewAt(i); } } {  TableLayout table = (TableLayout) findViewById(R.id.tblScolors); for(int i = 0; i < table.getChildCount(); i = 0) { View child = table.getChildAt(0); if (child != null && child instanceof TableRow) { TableRow row = (TableRow) child; row.removeAllViews(); table.removeViewAt(i); } } }  TableLayout table = (TableLayout) findViewById(R.id.tblScolors); for(int i = 0; i < table.getChildCount(); i = 0) { View child = table.getChildAt(0); if (child != null && child instanceof TableRow) { TableRow row = (TableRow) child; row.removeAllViews(); table.removeViewAt(i); } } 

    Isso limpa todas as linhas!

    Eu acho que seu problema principal é se você remoview linhas que todas as linhas serão recém-colocadas paira que a linha com ID = 5 seja agora ID = 4 se você excluir a linha com ID = 3

    então talvez você tenha que reiniciair o contador e iterair novamente ou você gera a tabela novamente depois de limpair todas as linhas

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.