2012-06-16 1 views
0

Я пытаюсь динамически создать ExpandableListView в своем приложении. В родительских строках отображаются даты следующих 7 дней, и я получаю детей из веб-службы. Но выборка и отображение детей - это не моя проблема. Я столкнулся с проблемой динамического отображения родительских строк. Мне нужно отображать даты следующих 7 дней в родительских строках.Dynamically Create ExpandableListView

Я объявлял этот пустой массив строк по всему миру.

private String[] parent = new String[7]; 

Затем, внутри onCreate(), я использовал этот код для создания содержимого родительского массива.

Calendar cal = Calendar.getInstance(); 
    String strdate = null; 
    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 

    int i; 
    for(i=0;i<7;i++) 
    { 

     if (cal != null) { 
      strdate = sdf.format(cal.getTime()); 
      } 
      parent[i] = strdate; 
      cal.add(Calendar.HOUR_OF_DAY, 24); 
    } 

Но активность дает NullPointerException на MyExpandableListAdapter.getGroupView().

(Может быть, потому, что родительский массив не инициализирован изначально?)

, потому что код работает, когда я объявляю родительский массив Initally в

private String[] parent = new String[] {"","","".....}; 
+1

Не уверен, что это причина вашей проблемы, но вы неправильно создаете свои строки даты. Прежде всего, вы добавляете 0 часов в 'cal' (24 * 0), тогда вы добавляете 24, 48, 72 и т. Д. Это накопительно, поэтому вы получите сегодня, завтра, через два дня после завтра, через 5 дней послезавтра и т. Д. Попробуйте добавить «date» и оставить «i» из него ... «cal.add (Calendar.DATE, 1)» - это также должно опрокинуть «MONTH», если оно прошло до конца текущего месяца , – Squonk

+0

Спасибо за указание. Я прекратил умножать i на него. Строки отображаются правильно, когда я сначала объявляю родительский массив, но хочу, чтобы это было сделано динамически. – Swayam

ответ

0

Мое решение: Статический блок был ответ к нему. Я поставил код для создания содержимого родительского массива внутри статического блока вместо onCreate(), и теперь он работает как шарм.