2013-07-29 3 views
2

Я пытаюсь заполнить TableLayout динамическим количеством строк на основе массива значков, однако я не могу заставить строки отображаться на экране. В таблице должна отображаться сетка 5x3. Код, я использую ниже:Как создать таблицу с динамическим числом строк в Android

Services serv = new Services(); 

    Item[] iconArray = serv.getIcons(); 

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

    int rowNum = iconArray.length/5; 
    TableRow rows[]= new TableRow[rowNum]; 

    int count = 0; 
    for (int i = 0; i < iconArray.length; i++) { 
     final String name = iconArray[i].name; 
     final int icon = iconArray[i].icon; 

     LayoutInflater inflater = LayoutInflater.from(MainActivity.this); 
     View v = inflater.inflate(R.layout.icon, null,false); 
     TextView text = (TextView) v.findViewById(R.id.text); 
     text.setText(name); 

     ImageView imageicon = (ImageView) v.findViewById(R.id.icon); 
     imageicon.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       //Do some stuff 
      } 
     }); 
     Drawable drawicon = getResources().getDrawable(icon); 
     imageicon.setBackgroundDrawable(drawicon); 

     if(i == 4) //End of Row 
     { 
      count++; 
     } 
     if(i == 9) //End of Row2 
     { 
      count++; 
     } 

     rows[count] = new TableRow(this); 
     rows[count].addView(v); 
     table.addView(rows[count]); 
    } 

Это ничего не выводит на экран и TableLayout остается пустым. Может ли кто-нибудь сказать мне, если я на правильном пути?

Любая помощь будет оценена по достоинству.

Благодаря

+0

Не могли бы вы просто объяснить, что такое TableLayout должен отображаться? Только строка с изображением и TextView? – Jackyto

+0

@Jahckyto TableLayout должен отображать три строки, заполненные значками и TextView с именем каждого значка. Использование GridView здесь не было возможным по другим причинам. – user2060733

ответ

1

Прежде всего, я буду делать конкретный макет для моей строки:

my_row.xml

<?xml version="1.0" encoding="utf-8"?> 
<TableRow xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/myRow" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" 
    android:weightSum="1" > 

    <ImageView 
     android:id="@+id/myImg" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 

    <TextView 
     android:id="@+id/myText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"" /> 

</TableRow> 

Тогда, я просто заполнить свою таблицу с моими строками в петле:

static TableRow row; 
Item[] iconArray = serv.getIcons(); 
TableLayout table = (TableLayout) myView.findViewById(R.id.table1); 

for (int i = 0; i < iconArray.length; i++) { 

    LayoutInflater inflater = LayoutInflater.from(MainActivity.this); 
    row = (TableRow) inflater.inflate(R.layout.my_row, cont, false); 

    final String name = iconArray[i].name; 
    final int icon = iconArray[i].icon; 

    TextView text = (TextView) v.findViewById(R.id.myText); 
    text.setText(name); 

    ImageView imageicon = (ImageView) v.findViewById(R.id.myImg); 
    imageicon.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      //Do some stuff 
     } 
    }); 
    Drawable drawicon = getResources().getDrawable(icon); 
    imageicon.setBackgroundDrawable(drawicon); 

    table.addView(row); 
} 
+0

Спасибо за ваш ответ, но я считаю, что это создает новую строку для каждого значка. Мне нужно 3 строки в сетке 5x3. Это моя ошибка, я не сделал это ясно в моем первоначальном вопросе – user2060733

+0

Да, он создает строку для каждого изображения. Я не знаю, можно ли сделать таблицу GridLayout, в этом случае вам будет легко рисовать таблицу – Jackyto

Смежные вопросы