Заполнение двумерного массива строк из курсора - PullRequest
0 голосов
/ 25 февраля 2012

У меня возникла проблема при попытке загрузить мою базу данных в Android ExpandableList, я пытался использовать методы CursorTree и SimpleCursorTree с минимальным успехом, поэтому сейчас я пытаюсь заставить его работать с BaseExpandableListAdapter.По какой-то причине все, что я получаю, это категории, но не фактические списки для категорий, что я делаю неправильно?

public static String[][] sortSpellNames(){
    int groupnmbr = 0;
    int childnmbr = 0;
    String[] aGroups = {"Combat", "Detection", "Health", "Illusion", "Manipulation"};
    String[] Combat = new String[grabList("SHADOWRUNSPELLS",new String[]{"Name"}, "'Category' like 'Combat'").getCount()],
            Detection = new String[grabList("SHADOWRUNSPELLS",new String[]{"Name"}, "'Category' like 'Detection'").getCount()],
            Health = new String[grabList("SHADOWRUNSPELLS",new String[]{"Name"}, "'Category' like 'Health'").getCount()],
            Illusion = new String[grabList("SHADOWRUNSPELLS",new String[]{"Name"}, "'Category' like 'Illusion'").getCount()],
            Manipulation = new String[grabList("SHADOWRUNSPELLS",new String[]{"Name"}, "'Category' like 'Manipulation'").getCount()];

    Cursor cursor;
    while(groupnmbr < aGroups.length){
        childnmbr = 0;

        cursor = grabList("SHADOWRUNSPELLS",new String[]{"Name"}, "'Category' like '" + aGroups[groupnmbr] + "'");
        cursor.moveToFirst();

        while(cursor.moveToNext()){
            switch(groupnmbr){
            case 0: Combat[childnmbr] = cursor.getString(cursor.getColumnIndex("Name"));
                    break;
            case 1: Detection[childnmbr] = cursor.getString(cursor.getColumnIndex("Name"));
                    break;
            case 2: Health[childnmbr] = cursor.getString(cursor.getColumnIndex("Name"));
                    break;
            case 3: Illusion[childnmbr] = cursor.getString(cursor.getColumnIndex("Name"));
                    break;
            case 4: Manipulation[childnmbr] = cursor.getString(cursor.getColumnIndex("Name"));
                    break;
            }
            childnmbr++;
        }
        groupnmbr++;
    }

    String[][] aChildren = {Combat, Detection, Health, Illusion, Manipulation}; 

    return aChildren;
}

1 Ответ

0 голосов
/ 28 февраля 2012

Я только что решил проблему. Сначала для поиска требовалось \ "окружение поисков, а не '. Затем я наткнулся на исключение нулевого указателя, которое было разрешено путем изменения

    String[] Combat = new String[grabList("SHADOWRUNSPELLS",new String[]{"Name"}, "'Category' like 'Combat'").getCount()]

с

    String[] Combat = new String[grabList("SHADOWRUNSPELLS",new String[]{"Name"}, "'Category' like 'Combat'").getCount() - 1]

и повторяется для каждой строки []. Надеюсь, это полезно для всех, кто сталкивается с подобной проблемой.

...