AutoCompleteTextView Использование API Google Place не работает

Мне нужно создать AutoCompleteTextView с помощью Google Places API. Я попробовал следующий код, но он не работает. Я не получаю никаких ошибок и не могу получить никаких предложений, таких как окно поиска Google.

Пожалуйста, предложите, как это сделать или где я ошибаюсь.

   final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.list_item);
   AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
   adapter.setNotifyOnChange(true);
   textView.setAdapter(adapter);
   textView.addTextChangedListener(new TextWatcher() {

   public void onTextChanged(CharSequence s, int start, int before, int count) {
   if (count%3 == 1) {
   adapter.clear();
  try {

        URL googlePlaces = new URL(
        // URLEncoder.encode(url,"UTF-8");
                "https://maps.googleapis.com/maps/api/place/autocomplete/json?input="+ URLEncoder.encode(s.toString(), "UTF-8") +"&types=geocode&language=fr&sensor=true&key=<getyourowndamnkey>");
        URLConnection tc = googlePlaces.openConnection();
        Log.d("GottaGo", URLEncoder.encode(s.toString()));
        BufferedReader in = new BufferedReader(new InputStreamReader(
                tc.getInputStream()));

        String line;
        StringBuffer sb = new StringBuffer();
        while ((line = in.readLine()) != null) {
        sb.append(line);
        }
        JSONObject predictions = new JSONObject(sb.toString());            
        JSONArray ja = new JSONArray(predictions.getString("predictions"));

            for (int i = 0; i < ja.length(); i++) {
                JSONObject jo = (JSONObject) ja.get(i);
                adapter.add(jo.getString("description"));
            }


    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
  }        

 }

public void beforeTextChanged(CharSequence s, int start, int count,
  int after) {
 // TODO Auto-generated method stub

   }

public void afterTextChanged(Editable s) {

}
});

person Nibha Jain    schedule 24.11.2011    source источник


Ответы (2)


Если вы создаете сообщение LogCat, подобное тому, которое у вас есть для GottaGo, которое включает несколько ожидаемых результатов от Places Api, это может помочь вам проверить данные, чтобы увидеть, в чем проблема.

https://maps.googleapis.com/maps/api/place/autocomplete/json?input="+ URLEncoder.encode(s.toString(), "UTF-8") +"&types=geocode&language=fr&sensor=true&key=<getyourowndamnkey>

Это ссылка, к которой вы пытаетесь подключиться по URL-адресу. Вы действительно вставили свой код или просто поместили код Google по умолчанию для этого примера? Если это так, то поэтому вы не можете скачать его.

Попробуйте вставить ссылку в свой браузер, он все равно должен отображать данные и сообщит вам об ошибке.

person Joe    schedule 14.01.2012

Просто измените s.toString на args[0] :)

person Meg    schedule 08.10.2012