data from sqlite into ArrayList<String>

孤人 提交于 2019-12-12 03:18:04

问题


i am using code this blog to have a draggable list. This tutorial is using a custom DragNDropAdapter that takes the content as an ArrayList.

In my listActivity i query a table with returned column name.It has 11 values inserted. i tried to convert it to ArrayList from String[] with many ways such as :

 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]);
        }

or

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

what i get is a list with just the name of the column, name. do you have any ideas


回答1:


String[] from = new String[]{DbManager.KEY_NAME};

Because your string array has only one value which is KEY_NAME.

What you need to do is,

Get values from Cursor using loop and populate it String[] above.

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]);           
     }                  
}

Note: I haven't validated this in IDE, there may be syntax errors.




回答2:


You can use following method this method will get data from db and then return you an ArrayList of String for this data. In your case this array list will contain names.

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();
    }
}


来源:https://stackoverflow.com/questions/9052987/data-from-sqlite-into-arrayliststring

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!