问题
In my application I have an Activity which extends MapActivity
. and there i put an AutoCompleteTextView
and a button called "Search" so what i write within AutoCompleteTextView
AND press Search button it goes to that location in Google map. AutoCompleteTextView
is for small no of items which i mention in strings.xml.
But I want it should be worked as google search engine, like in google search box whatever we start to write it auto completes every word there.
Thing is that it takes data from google server. Is not it?
If it is, then how can i bind data to my AutoCompleteTextView from Google server so that it works as Google search box.
I am using android API v2.2.
回答1:
You have to use Google Places API ,you need to generate a place API key first ,check this page :
http://code.google.com/apis/maps/documentation/places/
In my case i have used this code :
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=<getyourAPIkey>");
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) {
} });
来源:https://stackoverflow.com/questions/6489645/android-how-to-make-autocompletetextview-work-as-google-search-box