Динамическое заполнение расширяемого списка просмотра - PullRequest
0 голосов
/ 08 августа 2011

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

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

private static String[][] children = new String[7][4];
private static String[] groups =  new String[7];

Вот остальная часть кода, когда я пытаюсь заполнить представление.

public void getData(){ 
    try {
        int tempGroupCount = 0;
        URL food_url = new URL (Constants.SERVER_DINING);
        BufferedReader my_buffer = new BufferedReader(new InputStreamReader(food_url.openStream()));
        temp = my_buffer.readLine();
        // prime read
        while (temp != null ){
            childrenCount = 0;
            // check to see if readline equals Location
            //Log.w("HERasdfsafdsafdsafE", temp);
            // start a new location
            if (temp.equalsIgnoreCase("Location"))
            {
                temp = my_buffer.readLine();
                groups[tempGroupCount] = temp;
                tempGroupCount++;
                Log.w("HERE IS TEMP", temp);
            }
            temp = my_buffer.readLine();
                while (temp.equalsIgnoreCase("Location") == false){
                    Log.w("ONMG HEHREHRHERHER", temp);
                    children[groupCount][childrenCount] = "IAJHSDSAD";
                    childrenCount++;
                    temp = my_buffer.readLine();
                }
                groupCount++;
        }

        my_buffer.close();
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        Log.e("IO EXCEPTION", "Exception occured in MyExpandableListAdapter:" + e.toString());
    }
    }

Ответы [ 2 ]

1 голос
/ 27 октября 2011

для меня это выглядит как ошибка в цикле - поскольку вы читаете другую строку без проверки, является ли она нулевой

Ваш цикл while должен выглядеть примерно так:

// prime read         
while (temp != null ){             
    int childrenCount = 0;             
    // check to see if readline equals Location       
    // start a new location 
    //Log.w("HERasdfsafdsafdsafE", temp);            
    if (temp.equalsIgnoreCase("Location"))             
    {                 
        temp = my_buffer.readLine();                 
        groups[tempGroupCount] = temp;                 
        tempGroupCount++;                 
        Log.w("HERE IS TEMP", temp);             
    }
    //>>remove following line as that one isn't checked and
    //>>you are loosing on a line that is potentialy a child
    //temp = my_buffer.readLine();
    //>>check do you have first item to add subitems
    else if (tempGroupCount>0){
        while (temp.equalsIgnoreCase("Location") == false){                     
        Log.w("ONMG HEHREHRHERHER", temp);  
        children[tempGroupCount-1][childrenCount] = "IAJHSDSAD";                     
        childrenCount++;                     
        temp = my_buffer.readLine();                 
    } 
    //>>next counter is probably not need but can't see if you're using it somewhere else                
    //groupCount++;         
 }          
0 голосов
/ 08 августа 2011

Я бы сначала заменил массив строк на некоторую 2-мерную коллекцию, например, arraylist2d (вы можете в Google), чтобы вы могли легко добавлять и удалять данные из списка.Если вы создали адаптер, который расширяет BaseExpandableListAdapter, все должно быть обработано без проблем.Что касается NULLPointer, не могли бы вы вставить stacktrace или дополнительную информацию о том, в какой строке это происходит?

...