Android如何谷歌搜索,android – 如何从谷歌地方检索搜索建议?
这是我遇到类似问题时使用的代码片段.
这是我的PlacesAutoCompleteAdapter.java文件.
package com.inukshk.adapter;
import java.util.ArrayList;
import android.content.Context;
import android.widget.ArrayAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import com.inukshk.CreateInukshk.CreateInukshk;
public class PlacesAutoCompleteAdapter extends ArrayAdapter implements
Filterable {
private ArrayList resultList;
public PlacesAutoCompleteAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
}
@Override
public int getCount() {
return resultList.size();
}
@Override
public String getItem(int index) {
return resultList.get(index);
}
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
if (constraint != null) {
// Retrieve the autocomplete results.
resultList = CreateInukshk.autocomplete(constraint
.toString());
// Assign the data to the FilterResults
filterResults.values = resultList;
filterResults.count = resultList.size();
}
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
if (results != null && results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
};
return filter;
}
}
这是您在活动的OnCreate()中必须做的事情.
autoCompView = (AutoCompleteTextView) findViewById(R.id.editloc);
autoCompView.setAdapter(new PlacesAutoCompleteAdapter(this,
R.layout.list_item));
这是我在app中使用的静态字符串.
private static final String PLACES_API_BASE = "https://maps.googleapis.com/maps/api/place";
private static final String TYPE_AUTOCOMPLETE = "/autocomplete";
private static final String OUT_JSON = "/json";
private static final String API_KEY = "YOUR API KEY";
最后,这是您将在Adapter中使用的方法.
public static ArrayList autocomplete(String input) {
ArrayList resultList = null;
HttpURLConnection conn = null;
StringBuilder jsonResults = new StringBuilder();
try {
StringBuilder sb = new StringBuilder(PLACES_API_BASE
+ TYPE_AUTOCOMPLETE + OUT_JSON);
sb.append("?sensor=false&key=" + API_KEY);
// sb.append("&components=country:uk");
sb.append("&input=" + URLEncoder.encode(input, "utf8"));
URL url = new URL(sb.toString());
conn = (HttpURLConnection) url.openConnection();
InputStreamReader in = new InputStreamReader(conn.getInputStream());
// Load the results into a StringBuilder
int read;
char[] buff = new char[1024];
while ((read = in.read(buff)) != -1) {
jsonResults.append(buff, 0, read);
}
} catch (MalformedURLException e) {
Log.e(TAG, "Error processing Places API URL", e);
return resultList;
} catch (IOException e) {
Log.e(TAG, "Error connecting to Places API", e);
return resultList;
} finally {
if (conn != null) {
conn.disconnect();
}
}
try {
// Create a JSON object hierarchy from the results
JSONObject jsonObj = new JSONObject(jsonResults.toString());
JSONArray predsJsonArray = jsonObj.getJSONArray("predictions");
// Extract the Place descriptions from the results
resultList = new ArrayList(predsJsonArray.length());
for (int i = 0; i < predsJsonArray.length(); i++) {
resultList.add(predsJsonArray.getJSONObject(i).getString(
"description"));
}
} catch (JSONException e) {
Log.e(TAG, "Cannot process JSON results", e);
}
return resultList;
}
我猜你已经指定了list_item.xml,如下所示.
android:layout_width="wrap_content" android:layout_height="wrap_content" />
试试看.希望它能帮到你.
Android如何谷歌搜索,android – 如何从谷歌地方检索搜索建议?相关推荐
- 未找到beta版怎么解决_刚刚,谷歌正式发布Android 11 Beta版,带来多项重磅更新...
作者 | 安卓开发者博客 译者 | 核子可乐 策划 | 小智 转发链接:https://mp.weixin.qq.com/s/gp2XZGe69KDMAtsOeu56YA 前言 今日,谷歌安卓开发者博 ...
- 谷歌 G1 android APK安装器 离线安装软件
网友在购买Android手机时会发现T-Mobile G1自带了根USB转ExtUSB的数据线,但是并没有提供提供驱动光盘.Android手机网发现Google已经做好了G1的Windows版USB驱 ...
- 谷歌不更新android studio,彻底迈向64位:谷歌宣布 Android Studio 将停止 32 位版本更新...
彻底迈向64位:谷歌宣布 Android Studio 将停止 32 位版本更新 2019-06-12 14:30:27 8点赞 13收藏 11评论 自16年前第一款64位x86处理器横空出世,PC行 ...
- 谷歌发布 Android 8.1 首个开发者预览版,优化内存效率
今晨,谷歌推出了 Android 8.1 首个开发者预览版,此次升级涵盖了针对多个功能的提升优化,其中包含对 Android Go (设备运行内存小于等于 1 GB)和加速设备上对机器学习的全新神经网 ...
- android谷歌补丁日期,在谷歌日历Android中添加开始日期和结束日期之间所有日期的事件...
在谷歌日历 Android中添加开始日期和结束日期之间所有日期的事件.我希望每3个月剩余一次,直到结束日期. 这是我的功能 public void addEvent1(Context ctx, Str ...
- 谷歌的android下拉刷新页面,Android SwipeRefreshLayout:谷歌官方SDK包中的下拉刷新
<Android SwipeRefreshLayout:谷歌官方SDK包中的下拉刷新> 下拉刷新在如今移动开发中应用如此广泛和普遍,以至于谷歌干脆在SDK中给予支持.在android ...
- 谷歌升级Android分析应用程序
新的Android分析APP提供更佳的界面和使用体验,并自动依据不同的屏幕大小调整尺寸. 谷歌已经公布了一个新版Android分析应用,由此企业用户可以追踪其客户受众是如何应对他们的在线广告活动的. ...
- 谷歌暗示android wear未来或兼容ios系统!腾讯,传谷歌今年5月将推出iOS版本Android Wear...
导读:真是如此的话,不远的将来,iPhone 6就能够支持Moto 360. 腾讯科技讯 3月4日,来自法国科技网站01net的报道称,在今年5月举行的谷歌(微博)年度开发者大会中,谷歌将会发布iOS ...
- 为何谷歌放弃以甜品命名android,甜点不见了 谷歌变更Android命名方式
原标题:甜点不见了 谷歌变更Android命名方式 来源:张金梁 中关村在线消息:据外媒报道,谷歌Android Pie已经发布,但是从Android Pie开始,谷歌将不再使用甜点作为版本号的名字. ...
- android地图三段滑动,android – 像谷歌地图一样滑动BottomSheet
在过去,谷歌没有在其设计库中提供BottomSheet的支持,但最近在其更新API 23.2中,谷歌已经发布了针对BottomSheet的API. 检查这个link 更新 你的布局 xmlns:app ...
最新文章
- Android Splash界面支持用户点击 直接进入主界面
- 科技发展给保险行业带来了什么改变?
- Yii框架2.0的视图和widgets表单的使用
- 怎么用vnc访问自己内网电脑,同时又是同一个会话?
- heic怎么查看,如何打开heic
- #、%和$符号在OGNL表达式中的作用
- 链表面试笔试题目总结
- 使用traits技术表现迭代器类型 iterator_category
- 如何在MySQL中设置主从复制
- weblogic集群部署与负载均衡_集群,负载均衡,分布式的讲解和多台服务器代码同步...
- BZOJ-4008: [HNOI2015]亚瑟王 (概率期望DP)
- 增强for中操作集合元素的误区---java.util.ConcurrentModificationException
- 三通道HART / Modbus网关HTM-631
- macbook视频格式转换_Mac视频格式转换器:6款最好的免费工具
- Excel表格转latex以及转换后的表格边框截断解决、加粗和内容水平垂直居中
- python调用微信客户端_Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例...
- UMLChina公众号文章精选(20220126更新精选)
- 计算两条线或多边形的交点(LineString | MultiLineString | Polygon )
- Thinkpad E450c开启Intel virtual technology
- java resultset 获取列名_ResultSet 动态获取列名 | 学步园