2017-01-10 1 views
0

Я хочу иметь поисковую карту для моей карты, которая основана на имени и Latlang местоположения.android- Как обескровить поисковую карту для карты со String и Lat lang?

У меня есть Hashmap();

но эта строка: map.put (BaseColumns._ID, "rowid AS" + BaseColumns._ID);

дает ошибку: Неверный тип второго аргумента, требуется строка, найденная Latlang.

Я попытался изменить BaseColumns._ID на Latlang, но не смог.

Как это исправить?

private static final String TAG = "DictionaryDatabase"; 

//The columns we'll include in the dictionary table 
public static final String KEY_WORD = SearchManager.SUGGEST_COLUMN_TEXT_1; 
public static final Latlang KEY_DEFINITION = SearchManager.SUGGEST_COLUMN_TEXT_2; 

private static final String DATABASE_NAME = "dictionary"; 
private static final String FTS_VIRTUAL_TABLE = "FTSdictionary"; 
private static final int DATABASE_VERSION = 2; 

private final DictionaryOpenHelper mDatabaseOpenHelper; 
private static final HashMap<String,Latlang> mColumnMap = buildColumnMap(); 

/** 
* Constructor 
* @param context The Context within which to work, used to create the DB 
*/ 
public DictionaryDatabase(Context context) { 
    mDatabaseOpenHelper = new DictionaryOpenHelper(context); 
} 

private static HashMap<String,Latlang> buildColumnMap() { 
    HashMap<String,Latlang> map = new HashMap<String,Latlang>(); 
    map.put(KEY_WORD, KEY_DEFINITION); 
    map.put(KEY_WORD, KEY_DEFINITION); 
    map.put(BaseColumns._ID, "rowid AS " + 
      BaseColumns._ID); 
    map.put(SearchManager.SUGGEST_COLUMN_INTENT_DATA_ID, "rowid AS " + 
      SearchManager.SUGGEST_COLUMN_INTENT_DATA_ID); 
    map.put(SearchManager.SUGGEST_COLUMN_SHORTCUT_ID, "rowid AS " + 
      SearchManager.SUGGEST_COLUMN_SHORTCUT_ID); 
    return map; 
} 
+1

Как насчет 'map.put (BaseColumns._ID, новый Latlang (data1, data2));'? Или Почему вы не можете просто создать «Map »? –

+0

@KNeerajLal спасибо – Hadis

ответ

0

Вы объявляете карту как:

HashMap<String,Latlang> map = new HashMap<String,Latlang>(); 

Однако, данные являются строками:

map.put(SearchManager.SUGGEST_COLUMN_SHORTCUT_ID, "rowid AS " + 
      SearchManager.SUGGEST_COLUMN_SHORTCUT_ID); 

Я предлагаю вам объявить карту, как это:

HashMap<String, String> map = new HashMap<String, String>(); 

Или убедитесь, что ваши значения на самом деле LatLng:

map.put(BaseColumns._ID, new LatLng(latitude, longitude)); 
+0

Это сработало, спасибо – Hadis

+0

Я сделал еще несколько кодов и запустил приложение, и теперь он дает эту ошибку ** Причиняет: java.lang.NullPointerException: пытается вызвать виртуальный метод 'double java.lang.Double.doubleValue() 'в ссылке на нулевой объект ** в этой строке: 'новый LatLng (широта, долгота));' – Hadis

+0

Если вы заметили, что LatLng получит два двойника в своем конструкторе. То, что вы делаете, - это двойной объект (цель D), который является нулевым. Я предлагаю вам инициализировать его и быть уверенным, что вы не вызываете новый LatLng (широта, долгота) слишком рано, без данных. –

Смежные вопросы