2015-02-18 6 views
-1

Итак, для моего кода я пытаюсь заполнить расписание данными из базы данных. Лучший способ сделать это - создать пустой расписание, а затем заполнить его потом. Я точно знаю, сколько строк мне нужно, поэтому я использую массив TableRows, а затем добавляю определенное количество текстовых элементов в каждую строку.Массив таблеток - не может дать ему контекста?

Однако, он падает после каждого прогона. Я думаю, что это может иметь какое-то отношение к таблерам, которые не имеют контекста? Вот весь соответствующий код, я бы очень признателен, если кто-то может мне помочь.

public class Timetable123 extends Activity { 
    TableRow[] row= new TableRow[36]; //declared at start 

    InitializeTable(SortedDatesList.toArray(new String[SortedDatesList.size()])); // List converted to array sent to initializeTable 

} 

    private void InitializeTable(String...params){ 


     for(int i=0;i<36;i++) { 
      row[i].setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT)); 
      try { 
       for (Integer j = 0; j < (params.length+1); j++) { 
        TextView tv = new TextView(this); 
        tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, 
          TableRow.LayoutParams.WRAP_CONTENT)); 
        tv.setBackgroundResource(R.drawable.cell_shape); 
        tv.setPadding(5, 5, 5, 5); 
        row[i].addView(tv); 
        System.out.println(params[i] + " run " + i); 
       } 
      } catch (Exception ex) { 
       System.out.println(ex); 
      } 
     } 
    } 

Он всегда сбой, когда вызывается initializeTable, и я действительно не могу понять, почему.

+0

Краш -> Logcat – 2Dee

ответ

0

Создание массива типа TableRow, но не добавляя TableRow объект перед обращением TableRow из массива:

for(int i=0;i<36;i++) { 
    row[i]=new TableRow(Timetable123.this); //<< Create Object here 
    row[i].setLayoutParams(new 
      TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, 
         TableRow.LayoutParams.WRAP_CONTENT)); 
... 
} 
+0

Но, конечно, если я это сделаю, то я не могу ссылаться на TableRow из любого другого? – user3925417

+0

@ user3925417: yes должно добавлять объекты TableRow с помощью 'row [i] = new TableRow (Timetable123.this);' строка в строке Array перед доступом к нему в другом месте –

+0

ok спасибо! Теперь лучше работать – user3925417

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

  • Нет связанных вопросов^_^