我有一个查询,它在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();
}