2014-03-18 47 views
0

我想比较标记的价值与我预先制作的SQLite数据库中的ID。原因是我可以对特定的标记有特定的细节。 例如:比较谷歌地图标记ID与ID在SQLite数据库

如果点击的标记id = 1,那么我希望在数据库中搜索id'1',然后从该行抓取细节。我认为这很简单,只是循环访问数据库,但这似乎不起作用。我当前的代码是:

final Cursor dbId = monDatabase.database.rawQuery("SELECT _id from monuments", null); 
    int idColumnCount = dbId.getColumnCount(); 
    dbId.moveToFirst(); 
    while(dbId.isAfterLast() == false) { 
     for(int f = 0; f < idColumnCount; f++) { 
      mainMarkerId = dbId.getInt(0); 

      map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() { 
       @Override 
       public void onInfoWindowClick(Marker marker) { 
        if(marker.getId().equals("m" + mainMarkerId)){ 
         Log.v("marker.getId()", "the id is: " + marker.getId()); 
         selectDesc = monDatabase.database.rawQuery("SELECT description from monuments WHERE _id = " + mainMarkerId, null); 
         selectDesc.moveToFirst(); 
         _description = selectDesc.getString(0); 
         Intent descriptionIntent = new Intent(MainActivity.this, DisplayData.class); 
         descriptionIntent.putExtra(EXTRA_MESSAGE, _description); 
         startActivity(descriptionIntent); 
         markerId.moveToNext(); 
        } 
       } 
      }); 
      dbId.moveToNext(); 
     } 
    } 

我不确定是否有可能这样,也许我不得不使用HashMap或东西。

任何帮助,非常感谢,

谢谢!

编辑:

我忘了提,我都已经显示在地图上,所以它更多的能够获取该位置的说明的情况下,然后将其通过一个新的标志物意图。

SOLUTION:

只是想我会张贴在这里的解决方案,如果任何人都需要它。我并不需要一个Hashtable,所有我所用的是:

selectDesc = monDatabase.database.rawQuery("SELECT description from monuments WHERE title = '" + marker.getTitle() + "'", null); 

无需所有的for循环或任何东西。非常非常简单!

回答

0

你最好的选择是创建一个数据库元素的HashMap,使用数据库ID作为键和标记作为值,然后你可以从你的数据库中拉出来,并有你需要的标记