我认为我没有做到这一点。一个伙伴告诉我使用cursor.getColumnIndex()来检索该表列中项目的值。在我看来它只是返回表中列的位置的int值,这就是为什么当我执行下面的代码时,我得到的是我的lat和long值的2.0或3.0,因为它们是第二和第三列桌子。
使用此方法返回lat long列中的项而不是它们在表中的位置的正确方法是什么?
以下是我在getColumnIndex()中使用的内容:
public List<LatLng> getAllPositions() {
List<LatLng> positionList = new ArrayList<LatLng>();
SQLiteDatabase database;
ResumeMySQLiteHelper dbHelper;
dbHelper = new ResumeMySQLiteHelper(this);
database = dbHelper.getWritableDatabase();
String[] allColumns = { ResumeMySQLiteHelper.COLUMN_ID,
ResumeMySQLiteHelper.COLUMN_COMMENT, ResumeMySQLiteHelper.COLUMN_LAT, ResumeMySQLiteHelper.COLUMN_LONG };
Cursor cursor = database.query(ResumeMySQLiteHelper.TABLE_NAME,
allColumns, null, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
double latitude = cursor.getColumnIndex("lat");
double longitude = cursor.getColumnIndex("long");
String testString = Double.toString(latitude);
String testLong = Double.toString(longitude);
Log.w("myApp", testString + " " + testLong);
//currently prints myApp 2.0 3.0 for every row in table
LatLng newLatLng = new LatLng(latitude, longitude);
positionList.add(newLatLng);
cursor.moveToNext();
}
// make sure to close the cursor
cursor.close();
return positionList;
}
答案 0 :(得分:4)
此:
double latitude = cursor.getColumnIndex("lat");
应该是:
double latitude = cursor.getDouble(cursor.getColumnIndex("lat"));
和双经度相同
答案 1 :(得分:1)
int cloumnIndex = cursor.getColumnIndex("lat");
为您提供包含“lat”值的列的索引
找到该列的索引后,您需要找到值。
cursor.getDouble(columnIndex);