【问题标题】:AutoCompleteTextView Using the Google Place API is not working使用 Google Place API 的 AutoCompleteTextView 不起作用
【发布时间】:2011-11-24 05:56:48
【问题描述】:

我必须使用 Google Places API 创建一个AutoCompleteTextView。我尝试了以下代码,但它不起作用。我没有收到任何错误,也无法获得 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) {

}
});

【问题讨论】:

    标签: android autocompletetextview google-places-api


    【解决方案1】:

    如果您创建一条 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 代码?如果是这样,那就是你不能下载它的原因。

    尝试将链接放入浏览器,它应该仍会显示数据,并且会告诉您是否有错误。

    【讨论】:

      【解决方案2】:

      只需将 s.toString 更改为 args[0] :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-20
        • 1970-01-01
        • 1970-01-01
        • 2015-04-08
        • 2018-09-24
        • 1970-01-01
        • 2021-06-27
        相关资源
        最近更新 更多