данные из sqlite в ArrayList <String> - PullRequest
0 голосов
/ 29 января 2012

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

В моем списке listActivity я запрашиваю таблицу с возвращенным столбцом name. В него вставлено 11 значений.я попытался преобразовать его в ArrayList из String [] многими способами, такими как:

 String[] from = new String[]{DbManager.KEY_NAME};
 ArrayList<String> content = new ArrayList<String>();

 for (int i=-1,l=from.length; ++i<l;) {
            content.add(from[i]);
            //Log.i("ArrayList", from[i]);
        }

или

 while(!mShopCatCursor.isAfterLast()){
         content.add(mShopCatCursor.getString(0));
     }

, что я получаю, это список только с именем столбца,name.есть ли у вас идеи

Ответы [ 2 ]

1 голос
/ 29 января 2012

Вы можете использовать следующий метод, этот метод будет получать данные из базы данных и затем возвращать вам ArrayList String для этих данных.В вашем случае этот список массивов будет содержать имена.

private ArrayList<String> getArrayList() {

    ArrayList<String> namesList = null;

    Cursor cursor = null;
    try {
        String query = "";//your query here
        cursor = db.rawQuery(query,null);
        if (cursor != null && cursor.moveToFirst()) {
            namesList = new ArrayList<String>();
            do {
                namesList.add(cursor.getString(0));
            } while (cursor.moveToNext());
        }
    } catch (Exception e) {
        e.printStackTrace();
        namesList = null;
    } finally {
        if (cursor != null && !cursor.isClosed()) {
            cursor.deactivate();
            cursor.close();
            cursor = null;
        }
        close();
    }
    return namesList;
}


/**
 * Closes the database
 */
private void close() {
    try {
        if (db != null && db.isOpen()) {
            DBHelper.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
0 голосов
/ 29 января 2012
String[] from = new String[]{DbManager.KEY_NAME};

Поскольку ваш строковый массив имеет только одно значение - KEY_NAME.

Что вам нужно сделать, это

Получить значения из курсора с помощью цикла и заполнить его строкой [] выше.

Cursor userCur = adaptor.getYourData();
            if (userCur != null) {
                String[] strArr = new String[userCur.getCount()];
                startManagingCursor(userCur);
                if (userCur.moveToFirst()) {
                    int count = 0;
                    do {
                        String userName = userCur.getString(1);
                        strArr[count] = userName.trim();
                        count++;
                    } while (userCur.moveToNext());
                }

ArrayList<String> content = new ArrayList<String>();  
               for (int i=-1,l=from.length; ++i<l;) {    
                content.add(from[i]);              
      //Log.i("ArrayList", from[i]);           
     }                  
}

Примечание: я не проверял это в IDE, могут быть синтаксические ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...