我希望这不是一个重复的问题。
我的应用程序中有一个数据库,用于存储和返回音频输出的校准偏移量。我有一个alertDialog,允许用户选择要应用的配置文件。问题是我在用户选择后需要原始int值,但数据库返回的格式如下:
calibrationDB [calibrationConfidence=1, systemName=Nexus7,DT770,250ohm, fileUsed=1, f125L=1, f250L=2, f500L=3, f1000L=4, f1500L=5, f2000L=6, f3000L=7, f4000L=8, f6000L=9, f8000L=10, f125R=1, f250R=2, f500R=3, f1000R=4, f1500R=5, f2000R=6, f3000R=7, f4000R=8, f6000R=9, f8000R=10]
基本上我想知道是否有一种快速或有效的方法来关闭我的结果中的标签(例如f125L =)。如果没有,那么从字符串中删除它们的最简单方法是什么?我想要的结果是:
Nexus7,DT770,250ohm, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
然后我将这些设置为地图。
编辑:用于获得此结果的代码是获取所有校准查询:
public List<calibrationDB> getAllCalibrations() {
List<calibrationDB> calibrationDBs = new ArrayList<calibrationDB>();
// Build query
String selectQuery = "SELECT * FROM " + TABLE_CALIBRATION;
Log.e(LOG, selectQuery);
// Get reference to writable DB
SQLiteDatabase db = this.getWritableDatabase();
Cursor c = db.rawQuery(selectQuery, null);
// Loop through all the rows and populate the list
if (c.moveToFirst()) {
do {
calibrationDB cdb = new calibrationDB();
cdb.setId(c.getInt(c.getColumnIndex(KEY_ID)));
cdb.setCalibrationConfidence(c.getInt(c.getColumnIndex(KEY_CALIBRATION_CONFIDENCE)));
cdb.setSystemName(c.getString(c.getColumnIndex(KEY_SYSTEM_NAME)));
cdb.setFileUsed(c.getString(c.getColumnIndex(KEY_FILE_USED)));
cdb.setf125L(c.getString(c.getColumnIndex(KEY_125L)));
cdb.setf250L(c.getString(c.getColumnIndex(KEY_250L)));
cdb.setf500L(c.getString(c.getColumnIndex(KEY_500L)));
cdb.setf1000L(c.getString(c.getColumnIndex(KEY_1000L)));
cdb.setf1500L(c.getString(c.getColumnIndex(KEY_1500L)));
cdb.setf2000L(c.getString(c.getColumnIndex(KEY_2000L)));
cdb.setf3000L(c.getString(c.getColumnIndex(KEY_3000L)));
cdb.setf4000L(c.getString(c.getColumnIndex(KEY_4000L)));
cdb.setf6000L(c.getString(c.getColumnIndex(KEY_6000L)));
cdb.setf8000L(c.getString(c.getColumnIndex(KEY_8000L)));
cdb.setf125R(c.getString(c.getColumnIndex(KEY_125R)));
cdb.setf250R(c.getString(c.getColumnIndex(KEY_250R)));
cdb.setf500R(c.getString(c.getColumnIndex(KEY_500R)));
cdb.setf1000R(c.getString(c.getColumnIndex(KEY_1000R)));
cdb.setf1500R(c.getString(c.getColumnIndex(KEY_1500R)));
cdb.setf2000R(c.getString(c.getColumnIndex(KEY_2000R)));
cdb.setf3000R(c.getString(c.getColumnIndex(KEY_3000R)));
cdb.setf4000R(c.getString(c.getColumnIndex(KEY_4000R)));
cdb.setf6000R(c.getString(c.getColumnIndex(KEY_6000R)));
cdb.setf8000R(c.getString(c.getColumnIndex(KEY_8000R)));
// Add calibration to calibrations list
calibrationDBs.add(cdb);
} while (c.moveToNext());
}
Log.d("getAllCalibrations()", calibrationDBs.toString());
// Return list
return calibrationDBs;
}
进一步调查后;我是否正确地认为如果我编写一个查询来单独获取每个列,它将没有标签?
编辑2:
当我从数据库中获得结果时,我使用以下内容将其调整为alertDialog中的列表视图:
// Get all the calibrations in the database
List<calibrationDB> allCalibrations = db.getAllCalibrations();
// Set up a Sting Array
List<String> stringList = new ArrayList<String>();
// Iterate the list and set to strings
for (int i = 0;i<= allCalibrations.size()-1;i++){
stringList.add(String.valueOf(allCalibrations.get(i)));
}
// Set to a char sequence for the list view
CharSequence[] calibSeq = stringList.toArray(new CharSequence[stringList.size()]);
感谢您的帮助!
答案 0 :(得分:0)
我发现导致我得到的效果的方法实现,完全是我自己的错。混合不知道我在做什么,并且遵循太多的教程,我不知道这些方法正在做什么。我想我现在已经失望了!这是一个:
public String toString() {
return "calibrationDB [calibrationConfidence=" + calibrationConfidence + ", systemBIG DIX!Name=" + systemName + ", fileUsed=" + fileUsed +
", f125L=" + f125L + ", f250L=" + f250L + ", f500L=" + f500L + ", f1000L=" + f1000L + ", f1500L=" + f1500L + ", f2000L=" + f2000L + ", f3000L=" + f3000L + ", f4000L=" + f4000L + ", f6000L=" + f6000L + ", f8000L=" + f8000L +
", f125R=" + f125R + ", f250R=" + f250R + ", f500R=" + f500R + ", f1000R=" + f1000R + ", f1500R=" + f1500R + ", f2000R=" + f2000R + ", f3000R=" + f3000R + ", f4000R=" + f4000R + ", f6000R=" + f6000R + ", f8000R=" + f8000R + "]";
}
导致我的问题的是toString()实现。我现在修改了它,并且直接从数据库得到了我想要的结果。
感谢@laalto&amp; @CL。