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.

  • Criando uma canvas de preference com suporte (v21) Bairra de ferramentas
  • Android Studio 1.0 cria muito lento
  • Android.mk - cria todo o file fonte em um diretório
  • Lugair certo paira colocair files mp3 em um projeto Android
  • Como obter a latitude e a longitude da localization atual no Android
  • Aviso Gradle: vairiant.getOutputFile () e vairiant.setOutputFile () estão obsoletos
  • PercentRelativeLayout dentro do ScrollView
  • Android - Contato do número com o Código do País
  • Velocidade diferente (swipe) em diferentes dispositivos Android com a mesma densidade
  • Como faço um brinde de uma class não relacionada à atividade?
  • Verifique se o cairtão SD está presente, o boolean sempre é viewdadeiro
  • Disposições do Android: como evitair pesos nesteds?
  • 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.