2014-03-18 74 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作爲鍵和標記作爲值,然後你可以從你的數據庫中拉出來,並有你需要的標記