我有一个查询,它在android sqlite中从数据库表规则填充光标。
当我在光标上使用getcount时,会显示24,这意味着光标上有24行。我想要的是将游标中的所有数据都复制到多维数组或arraylist,或者将数据库表的副本复制到数组列表中。

c = obj_db.rawQuery("select * from rules", null);
int count=c.getCount();
String x= String.valueOf(count);


我想要简短的数据副本,如数组列表中的表中所示

最佳答案

像这样

ArrayList<String> mArrayList = new ArrayList<String>();
c.moveToFirst();
while(!c.isAfterLast()) {
     mArrayList.add(c.getString(c.getColumnIndex(dbAdapter.KEY_NAME))); //add the item
     c.moveToNext();
}


重要的是

mArrayList.add(c.getString(c.getColumnIndex(KEY_NAME)));


在这里,我从放置在名为KEY_NAME的列的游标中获取字符串,可以根据数据获取getInt等。只需使用相应的列名。

编辑。

这是一个例子。您可以创建一个自定义的行类型列表,并向其中添加数据。

if (cursor != null && cursor.moveToFirst()) {
            //get columns
            int titleColumn = cursor.getColumnIndex
                    (android.provider.MediaStore.Audio.Media.TITLE);
            int idColumn = cursor.getColumnIndex
                    (android.provider.MediaStore.Audio.Media._ID);
            int artistColumn = cursor.getColumnIndex
                    (android.provider.MediaStore.Audio.Media.ARTIST);
            int albumID = cursor.getColumnIndex
                    (MediaStore.Audio.Media.ALBUM_ID);
            int albumColumn = cursor.getColumnIndex
                    (MediaStore.Audio.Media.ALBUM);
            //add row to list
            do {
                long thisId = cursor.getLong(idColumn);
                String thisTitle = cursor.getString(titleColumn);
                String thisArtist = cursor.getString(artistColumn);
                String thisAlbum = cursor.getString(albumColumn);
                String thisAlbumID = cursor.getString(albumID)
                if (thisAlarm + thisNoti + thisRing==0)
                    arrayList.add(new Row(thisId, thisTitle, thisArtist, thisAlbum, thisAlbumID));
            }
            while (cursor.moveToNext());
            cursor.close();
        }

07-24 09:49
查看更多