我在数据库中有4行纬度,我想得到它的所有行。在CafeDataSource
我查询了它并将其设置为ArrayList<HashMap<String, Object>>
。
当我在TopActivity
循环for
中使用它时,我可以查询所有4行。但是所有4行只有最后一行的一个值。例如,我的数据库(1,2,3,4),但我的结果(4,4,4,4)。
我在getArrCursor()
中有log(db)值,它运行正常。
我在for
循环中有一个log(number)值,但是它显示了我所有的并且都是最后一行。
如何查询所有和不同的行?
CafeDataSource
public ArrayList<HashMap<String, Object>> getArrCursor(){
arrCursor = new ArrayList<HashMap<String,Object>>();
HashMap<String, Object> map;
Cursor cursor = database.rawQuery("SELECT * FROM "+CafeDbOpenHelper.TABLE_CAFE, null);
if(cursor != null){
while(cursor.moveToNext()){
map = new HashMap<String, Object>();
map.put(CafeDbOpenHelper.CAFE_TITLE, cursor.getString(cursor.getColumnIndex(CafeDbOpenHelper.CAFE_TITLE)));
map.put(CafeDbOpenHelper.CAFE_THUMB, cursor.getString(cursor.getColumnIndex(CafeDbOpenHelper.CAFE_THUMB)));
map.put(CafeDbOpenHelper.CAFE_LATITUDE, cursor.getDouble(cursor.getColumnIndex(CafeDbOpenHelper.CAFE_LATITUDE)));
map.put(CafeDbOpenHelper.CAFE_LONGITUDE, cursor.getDouble(cursor.getColumnIndex(CafeDbOpenHelper.CAFE_LONGITUDE)));
Log.i("db", "" +cursor.getDouble(cursor.getColumnIndex(CafeDbOpenHelper.CAFE_LATITUDE)));
arrCursor.add(map);
}
}
return arrCursor;
}
TopActivity
int position = arrCursor.size();
for (int i = 0; i < position; i++) {
Log.i("number", "" +arrCursor.get(position -1).get(CafeDbOpenHelper.CAFE_LATITUDE));
double lat = (Double) arrCursor.get(position -1).get(CafeDbOpenHelper.CAFE_LATITUDE);
double lng = (Double) arrCursor.get(position -1).get(CafeDbOpenHelper.CAFE_LONGITUDE);
LatLng latlong = new LatLng(lat, lng);
map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
Marker maker = map.addMarker(new MarkerOptions().position(latlong).title((String) arrCursor.get(position -1).get(CafeDbOpenHelper.CAFE_TITLE)));
// Move the camera instantly to hamburg with a zoom of 15.
map.moveCamera(CameraUpdateFactory.newLatLngZoom(latlong, 17));
LinearLayout includeMap = (LinearLayout) findViewById(R.id.lin_map);
includeMap.setVisibility(v.VISIBLE);
}
答案 0 :(得分:1)
Position
永远不会改变,但您每次都会使用它来Array
。尝试改为
double lat = (Double) arrCursor.get(i).get(CafeDbOpenHelper.CAFE_LATITUDE);
double lng = (Double) arrCursor.get(i).get(CafeDbOpenHelper.CAFE_LONGITUDE);
修改强>
你有没有改变这一行
Marker maker = map.addMarker(new MarkerOptions().position(latlong).title((String) arrCursor.get(position -1).get(CafeDbOpenHelper.CAFE_TITLE)));
到
Marker maker = map.addMarker(new MarkerOptions().position(latlong).title((String)
arrCursor.get(i).get(CafeDbOpenHelper.CAFE_TITLE)));
您从i
的{{1}}位置开始,因此每次您想要访问该位置时,您都会使用Array