❶ android 版百度地图如何通过定位功能获得当前的位置所在的城市
网络地图是通过移动通信基站定位来确定当前位置所在的城市。其原理就是通过测算周围基站与手机的距离来交会估算手机的空间位置。
手机定位是指通过特定的定位技术来获取移动手机或终端用户的位置信息(经纬度坐标),在电子地图上标出被定位对象的位置的技术或服务。定位技术有两种,一种是基于GPS的定位,一种是基于移动运营网的基站的定位。基于GPS的定位方式是利用手机上的GPS定位模块将自己的位置信号发送到定位后台来实现手机定位的。基站定位则是利用基站对手机的距离的测算距离来确定手机位置的。后者不需要手机具有GPS定位能力,但是精度很大程度依赖于基站的分布及覆盖范围的大小,有时误差会超过一公里。前者定位精度较高。此外还有利用Wifi在小范围内定位的方式。
❷ android如何获取地理位置
三种方式进行定位,获取用户位置,分别是基于基站定位, 网络定位,GPS定位。
1.基站定位(passive):这是基于网络基站进行定位的,定位的精确度在几十米到几千米不等,在城市中基站覆盖率比较高,推荐使用基站定位,如果是在郊区,基站相距较远,基站的覆盖没有城里好,定位的误差比较大。如果在郊区不推荐使用基站定位。
2.网络定位:wifi定位,网络定位
3.GPS定位:与卫星进行通信。手机中嵌入了GPS模块(精简版的A-GPS),通过A-GPS搜索卫星, 获取经纬度。使用GPS的弊端是:必须站在空旷的地方,头顶对着天空,如果云层厚了,也会受到一定的影响。精确度:10-50米
扩展知识:
使用Android是定位必备的权限:
< uses-permission android:name= " android.permission.ACCESS_FINE_LOCATION " /> //精确定位
<uses-permission android:name= "android.permission.ACCESS_MOCK_LOCATION" /> //模拟器
<uses-permission android:name= "android.permission.ACCESS_COARSE_LOCATION" /> //粗糙定位
//获取定位管理对象
LocationManager lm=(LocationManager)getSystemService(LOCATION_SERVICE);
String[] names=lm.getAllProviders();//获取所有的位置提供者,一般三种
Criteria criteria=new Criteria();//查询条件,如果设置了海拔,则定位方式只能是GPS;
criteria.setCostAllowed(true);//是否产生开销,比如流量费
String provider=lm.getBaseProvider(criteria,true)//获取最好的位置提供者,第二个参数为true,表示只获取那些被打开的位置提供者
lm.requestLocationUpdates(provier,0,0,new LocationListener(){});//获取位置。第二个参数表示每隔多少时间返回一次数据,第三个参数表示被定位的物体移动每次多少米返回一次数据。
private class MyLocationListener implements LocationListener {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
@Override
public void onLocationChanged(Location location) {
System. out.println( "服务中位置监听发送了变化了" );
float accuracy = location.getAccuracy(); // 精确度
double altitude = location.getAltitude(); // 海拔
double latitude = location.getLatitude(); // 纬度
double longitude = location.getLongitude(); // 经度
String locationInfo = "jing:" + longitude + ",wei:" + latitude + ",haiba:" + altitude + ",jingque:" + accuracy;
Editor edit = sp.edit();
edit.putString( "location", locationInfo);
edit.commit();
}
} public void onProviderDisabled(String provider) {
}
❸ Android 自定义仿京东地址选择器
public class AddressPickerViewextends RelativeLayout{
// recyclerView 选中Item 的颜色
private int defaultSelectedColor = Color.parseColor("#3D71FF");
// recyclerView 未选中Item 的颜色
private int defaultUnSelectedColor = Color.parseColor("#2c2c2c");
// 确定字体不可以点击时候的颜色
private int defaultSureUnClickColor = Color.parseColor("#7F7F7F");
// 确定字体可以点击时候的颜色
private int defaultSureCanClickColor = Color.parseColor("#3D71FF");
private ContextmContext;
private int defaultTabCount =3; //tab 的数量
private TabLayoutmTabLayout; // tabLayout
private RecyclerViewmRvList; // 显示数据的RecyclerView
private StringdefaultProvince ="省份"; //显示在上面tab中的省份
private StringdefaultCity ="城市"; //显示在上面tab中的城市
private StringdefaultDistrict ="区县"; //显示在上面tab中的区县
private ListmRvData; // 用来在recyclerview显示的数据
private AddressAdaptermAdapter; // recyclerview 的adapter
private YwpAddressBeanmYwpAddressBean; // 总数据
private YwpAddressBean.AddressItemBeanmSelectProvice; //选中 省份bean
private YwpAddressBean.AddressItemBeanmSelectCity;//选中 城市bean
private YwpAddressBean.;//选中 区县bean
private int mSelectProvicePosition =0; //选中 省份 位置
private int mSelectCityPosition =0;//选中 城市 位置
private int mSelectDistrictPosition =0;//选中 区县 位置
private ;
public AddressPickerView(Context context) {
super(context);
init(context);
}
public AddressPickerView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context);
}
public AddressPickerView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
/**
* 初始化
*/
private void init(Context context) {
mContext = context;
mRvData =new ArrayList<>();
// UI
View rootView =inflate(mContext, R.layout.address_picker_view, this);
// tablayout初始化
mTabLayout = (TabLayout) rootView.findViewById(R.id.tlTabLayout);
mTabLayout.addTab(mTabLayout.newTab().setText(defaultProvince));
mTabLayout.addTab(mTabLayout.newTab().setText(defaultCity));
mTabLayout.addTab(mTabLayout.newTab().setText(defaultDistrict));
mTabLayout.addOnTabSelectedListener(tabSelectedListener);
// recyclerview adapter的绑定
mRvList = (RecyclerView) rootView.findViewById(R.id.rvList);
mRvList.setLayoutManager(new LinearLayoutManager(context));
mAdapter =new AddressAdapter();
mRvList.setAdapter(mAdapter);
// 初始化默认的本地数据 也提供了方法接收外面数据
mRvList.post(new Runnable() {
@Override
public void run() {
initData();
}
});
}
/**
* 初始化数据
* 拿assets下的json文件
*/
private void initData() {
StringBuilder jsonSB =new StringBuilder();
try {
BufferedReader addressJsonStream =new BufferedReader(new InputStreamReader(mContext.getAssets().open("address.json")));
String line;
while ((line = addressJsonStream.readLine()) !=null) {
jsonSB.append(line);
}
}catch (IOException e) {
e.printStackTrace();
}
// 将数据转换为对象
mYwpAddressBean =new Gson().fromJson(jsonSB.toString(), YwpAddressBean.class);
if (mYwpAddressBean !=null) {
mRvData.clear();
mRvData.addAll(mYwpAddressBean.getProvince());
mAdapter.notifyDataSetChanged();
}
}
/**
* 开放给外部传入数据
* 暂时就用这个Bean模型,如果数据不一致就需要各自根据数据来生成这个bean了
*/
public void initData(YwpAddressBean bean) {
if (bean !=null) {
mSelectDistrict =null;
mSelectCity =null;
mSelectProvice =null;
mTabLayout.getTabAt(0).select();
mYwpAddressBean = bean;
mRvData.clear();
mRvData.addAll(mYwpAddressBean.getProvince());
mAdapter.notifyDataSetChanged();
}
}
//点确定
private void sure() {
if (mSelectProvice !=null &&
mSelectCity !=null &&
mSelectDistrict !=null) {
// 回调接口
if (mOnAddressPickerSureListener !=null) {
mOnAddressPickerSureListener.onSureClick(mSelectProvice.getN(), mSelectCity.getN(), mSelectDistrict.getN());
}
}else {
Toast.makeText(mContext, "地址还没有选完整哦", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
// mYwpAddressBean = null;
}
/**
* TabLayout 切换事件
*/
TabLayout. =new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
mRvData.clear();
switch (tab.getPosition()) {
case 0:
mRvData.addAll(mYwpAddressBean.getProvince());
mAdapter.notifyDataSetChanged();
// 滚动到这个位置
mRvList.smoothScrollToPosition(mSelectProvicePosition);
break;
case 1:
// 点到城市的时候要判断有没有选择省份
if (mSelectProvice !=null) {
for (YwpAddressBean.AddressItemBean itemBean :mYwpAddressBean.getCity()) {
if (itemBean.getP().equals(mSelectProvice.getI()))
mRvData.add(itemBean);
}
}else {
Toast.makeText(mContext, "请您先选择省份", Toast.LENGTH_SHORT).show();
}
mAdapter.notifyDataSetChanged();
// 滚动到这个位置
mRvList.smoothScrollToPosition(mSelectCityPosition);
break;
case 2:
// 点到区的时候要判断有没有选择省份与城市
if (mSelectProvice !=null &&mSelectCity !=null) {
for (YwpAddressBean.AddressItemBean itemBean :mYwpAddressBean.getDistrict()) {
if (itemBean.getP().equals(mSelectCity.getI()))
mRvData.add(itemBean);
}
}else {
Toast.makeText(mContext, "请您先选择省份与城市", Toast.LENGTH_SHORT).show();
}
mAdapter.notifyDataSetChanged();
// 滚动到这个位置
mRvList.smoothScrollToPosition(mSelectDistrictPosition);
break;
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
};
/**
* 下面显示数据的adapter
*/
class AddressAdapterextends RecyclerView.Adapter {
@Override
public ViewHolderonCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_address_text, parent, false));
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
final int tabSelectPosition =mTabLayout.getSelectedTabPosition();
holder.mTitle.setText(mRvData.get(position).getN());
holder.mTitle.setTextColor(defaultUnSelectedColor);
// 设置选中效果的颜色
switch (tabSelectPosition) {
case 0:
if (mRvData.get(position) !=null &&
mSelectProvice !=null &&
mRvData.get(position).getI().equals(mSelectProvice.getI())) {
holder.mTitle.setTextColor(defaultSelectedColor);
}
break;
case 1:
if (mRvData.get(position) !=null &&
mSelectCity !=null &&
mRvData.get(position).getI().equals(mSelectCity.getI())) {
holder.mTitle.setTextColor(defaultSelectedColor);
}
break;
case 2:
if (mRvData.get(position) !=null &&
mSelectDistrict !=null &&
mRvData.get(position).getI().equals(mSelectDistrict.getI())) {
holder.mTitle.setTextColor(defaultSelectedColor);
}
break;
}
// 设置点击之后的事件
holder.mTitle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 点击 分类别
switch (tabSelectPosition) {
case 0:
mSelectProvice =mRvData.get(position);
// 清空后面两个的数据
mSelectCity =null;
mSelectDistrict =null;
mSelectCityPosition =0;
mSelectDistrictPosition =0;
mTabLayout.getTabAt(1).setText(defaultCity);
mTabLayout.getTabAt(2).setText(defaultDistrict);
// 设置这个对应的标题
mTabLayout.getTabAt(0).setText(mSelectProvice.getN());
// 跳到下一个选择
mTabLayout.getTabAt(1).select();
mSelectProvicePosition =position;
break;
case 1:
mSelectCity =mRvData.get(position);
// 清空后面一个的数据
mSelectDistrict =null;
mSelectDistrictPosition =0;
mTabLayout.getTabAt(2).setText(defaultDistrict);
// 设置这个对应的标题
mTabLayout.getTabAt(1).setText(mSelectCity.getN());
// 跳到下一个选择
mTabLayout.getTabAt(2).select();
mSelectCityPosition =position;
break;
case 2:
mSelectDistrict =mRvData.get(position);
// 没了,选完了,这个时候可以点确定了
mTabLayout.getTabAt(2).setText(mSelectDistrict.getN());
notifyDataSetChanged();
mSelectDistrictPosition =position;
sure();
break;
}
}
});
}
@Override
public int getItemCount() {
return mRvData.size();
}
class ViewHolderextends RecyclerView.ViewHolder {
TextViewmTitle;
ViewHolder(View itemView) {
super(itemView);
mTitle = (TextView) itemView.findViewById(R.id.itemTvTitle);
}
}
}
/**
* 点确定回调这个接口
*/
public interface OnAddressPickerSureListener {
void onSureClick(String proviceName,String cityName,String earaName);
}
public void setOnAddressPickerSure(OnAddressPickerSureListener listener) {
this.mOnAddressPickerSureListener = listener;
}
❹ 百度地图android开发中,类MKOfflineMap的方法getOfflineCityList()获取城市列表
从省到到市,从市取到区,android上好像没有对应的API,不过可以通过javascript的接口来实现,具体说明如下:
省不用说了,不需要接口都可以取得到列表。
市的话要根据省来取,具体如下:
用android的HttpGet等方法(联网的方法网上都有),访问下面的接口:
http://map..com/?qt=sub_area_list&areacode=15&level=1&from=mapapi
(其中最重要的参数就是areacode,下面有介绍,这里15就代表是湖北省)
这样就得到一个省对应的市的相关JSON数据,如:
{"content":{"area_code":15,"area_name":"湖北省","area_type":1,"geo":"1|12513622.70,3637618.8312513622.70,3637618.83|12513622.70,3637618.83","sub":[{"area_code":122,"area_name":"鄂州市","area_type":2,"geo":"1|12790258.19,3531251.9912790258.19,3531251.99|12790258.19,3531251.99"},{"area_code":156,"area_name":"襄樊市","area_type":2,"geo":"1|12487547.34,3752866.8112487547.34,3752866.81|12487547.34,3752866.81"},{"area_code":157,"area_name":"荆州市","area_type":2,"geo":"1|12494843.30,3524596.7112494843.30,3524596.71|12494843.30,3524596.71"},{"area_code":216,"area_name":"十堰市","area_type":2,"geo":"1|12334470.59,3823962.8912334470.59,3823962.89|12334470.59,3823962.89"},{"area_code":217,"area_name":"荆门市","area_type":2,"geo":"1|12492111.99,3616047.7912492111.99,3616047.79|12492111.99,3616047.79"},{"area_code":218,"area_name":"武汉市","area_type":2,"geo":"1|12725759.65,3556525.7012725759.65,3556525.70|12725759.65,3556525.70"},{"area_code":270,"area_name":"宜昌市","area_type":2,"geo":"1|12391216.56,3576054.8912391216.56,3576054.89|12391216.56,3576054.89"},{"area_code":271,"area_name":"黄冈市","area_type":2,"geo":"1|12791485.39,3539172.5112791485.39,3539172.51|12791485.39,3539172.51"},{"area_code":310,"area_name":"孝感市","area_type":2,"geo":"1|12683405.94,3601233.8012683405.94,3601233.80|12683405.94,3601233.80"},{"area_code":311,"area_name":"黄石市","area_type":2,"geo":"1|12807522.82,3509660.5012807522.82,3509660.50|12807522.82,3509660.50"},{"area_code":362,"area_name":"咸宁市","area_type":2,"geo":"1|12723962.99,3466736.4612723962.99,3466736.46|12723962.99,3466736.46"},{"area_code":371,"area_name":"随州市","area_type":2,"geo":"1|12621469.77,3703661.0912621469.77,3703661.09|12621469.77,3703661.09"},{"area_code":373,"area_name":"恩施土家族苗族自治州","area_type":2,"geo":"1|12188717.77,3518605.0912188717.77,3518605.09|12188717.77,3518605.09"},{"area_code":1293,"area_name":"潜江市","area_type":2,"geo":"1|12553498.42,3525947.4312553498.42,3525947.43|12553498.42,3525947.43"},{"area_code":1713,"area_name":"仙桃市","area_type":2,"geo":"1|12622370.33,3519641.2012622370.33,3519641.20|12622370.33,3519641.20"},{"area_code":2654,"area_name":"天门市","area_type":2,"geo":"1|12593291.39,3565272.6712593291.39,3565272.67|12593291.39,3565272.67"},{"area_code":2734,"area_name":"神农架林区","area_type":2,"geo":"1|12299516.08,3687772.6212299516.08,3687772.62|12299516.08,3687772.62"}]},"result":{"error":0}}
解析这个JSON就能得到这个省下面包含的市。
3.区的话,要通过市获取,具体调用的方法跟取市的接口一样,只是传入的areacode不一样就可以了。(传城市的areacode就可以得到区)
areacode是网络地图对应的城市代码,在网络地图的开发网站上能找到,如果找不下,看下面的也可以:
mcid如下:areaUID=
中国|1
安徽|23
福建|16
甘肃|6
广东|7
广西|17
贵州|24
海南|21
河北|25
黑龙江|2
河南|30
湖北|15
湖南|26
江苏|18
江西|31
吉林省|9
辽宁|19
内蒙古|22
宁夏|20
青海|11
山东|8
山西|10
陕西|27
四川|32
新疆|12
西藏|13
云南|28
浙江|29
北京|131
天津|332
石家庄|150
唐山|265
秦皇岛|148
邯郸|151
邢台|266
保定|307
张家口|264
承德|207
沧州|149
廊坊|191
衡水|208
太原|176
大同|355
阳泉|357
长治|356
晋城|290
朔州|237
晋中|238
运城|328
忻州|367
临汾|368
吕梁|327
呼和浩特|321
包头|229
乌海|123
赤峰|297
通辽|64
鄂尔多斯|283
呼伦贝尔|61
巴彦淖尔|169
乌兰察布|168
兴安盟|62
锡林郭勒盟|63
阿拉善盟|230
沈阳|58
大连|167
鞍山|320
抚顺|184
本溪|227
丹东|282
锦州|166
营口|281
阜新|59
辽阳|351
盘锦|228
铁岭|60
朝阳|280
葫芦岛|319
长春|53
吉林市|55
四平|56
辽源|183
通化|165
白山|57
松原|52
白城|51
延边朝鲜族自治州|54
哈尔滨|48
齐齐哈尔|41
鸡西|46
鹤岗|43
双鸭山|45
大庆|50
伊春|40
佳木斯|42
七台河|47
牡丹江|49
黑河|39
绥化|44
大兴安岭地区|38
上海|289
南京|315
无锡|317
徐州|316
常州|348
苏州|224
南通|161
连云港|347
淮安|162
盐城|223
扬州|346
镇江|160
泰州|276
宿迁|277
杭州|179
宁波|180
温州|178
嘉兴|334
湖州|294
绍兴|293
金华|333
衢州|243
舟山|245
台州|244
丽水|292
合肥|127
芜湖|129
蚌端口|126
淮南|250
马鞍山|358
淮北|253
铜陵|337
安庆|130
黄山|252
滁州|189
阜阳|128
宿州|370
巢湖|251
六安|298
亳州|188
池州|299
宣城|190
福州|300
厦门|194
莆田|195
三明|254
泉州|134
漳州|255
南平|133
龙岩|193
宁德|192
南昌|163
景德镇|225
萍乡|350
九江|349
新余|164
鹰潭|279
赣州|365
吉安|318
宜春|278
抚州|226
上饶|364
济南|288
青岛|236
淄博|354
枣庄|172
东营|174
烟台|326
潍坊|287
济宁|286
泰安|325
威海|175
日照|173
莱芜|124
临沂|234
德州|372
聊城|366
滨州|235
菏泽|353
郑州|268
开封|210
洛阳|153
平顶山|213
安阳|267
鹤壁|215
新乡|152
焦作|211
濮阳|209
许昌|155
漯河|344
三门峡|212
南阳|309
商丘|154
信阳|214
周口|308
驻马店|269
武汉|218
黄石|311
十堰|216
宜昌|270
襄樊|156
鄂州|122
荆门|217
孝感|310
荆州|157
黄冈|271
咸宁|362
随州|371
恩施土家族苗族自治州|373
仙桃|1713
潜江|1293
天门|2654
神农架林区|2734
长沙|158
株洲|222
湘潭|313
衡阳|159
邵阳|273
岳阳|220
常德|219
张家界|312
益阳|272
郴州|275
永州|314
怀化|363
娄底|221
湘西土家族苗族自治州|274
广州|257
韶关|137
深圳|340
珠海|140
汕头|303
佛山|138
江门|302
湛江|198
茂名|139
肇庆|338
惠州|301
梅州|141
汕尾|339
河源|200
阳江|199
清远|197
东莞|119
中山|187
潮州|201
揭阳|259
云浮|258
南宁|261
柳州|305
桂林|142
梧州|304
北海|295
防城港|204
钦州|145
贵港|341
玉林|361
百色|203
贺州|260
河池|143
来宾|202
崇左|144
海口|125
三亚|121
五指山|1644
琼海|2358
儋州|1215
文昌|2758
万宁|1216
东方|2634
定安|1214
屯昌|1641
澄迈|2757
临高|2033
白沙黎族自治|2359
昌江黎族自治|1642
乐东黎族自治|2032
陵水黎族自治|1643
保亭黎族苗族自治|1217
琼中黎族苗族自治|2031
重庆|132
成都|75
自贡|78
攀枝花|81
泸州|331
德阳|74
绵阳|240
广元|329
遂宁|330
内江|248
乐山|79
南充|291
眉山|77
宜宾|186
广安|241
达州|369
雅安|76
巴中|239
资阳|242
阿坝藏族羌族自治州|185
甘孜藏族自治州|73
凉山彝族自治州|80
贵阳|146
六盘水|147
遵义|262
安顺|263
铜仁地区|205
黔西南布依族苗族自治州|343
毕节地区|206
黔东南苗族侗族自治州|342
黔南布依族苗族自治州|306
昆明|104
曲靖|249
玉溪|106
保山|112
昭通|336
丽江|114
临沧|110
楚雄彝族自治州|105
红河哈尼族彝族自治州|107
文山壮族苗族自治州|177
普洱|108
西双版纳傣族自治州|109
大理白族自治州|111
德宏傣族景颇族自治州|116
怒江傈僳族自治州|113
迪庆藏族自治州|115
拉萨|100
昌都地区|99
山南地区|97
日喀则地区|102
那曲地区|101
阿里地区|103
林芝地区|98
西安|233
铜川|232
宝鸡|171
咸阳|323
渭南|170
延安|284
汉中|352
榆林|231
安康|324
商洛|285
兰州|36
嘉峪关|33
金昌|34
白银|35
天水|196
武威|118
张掖|117
平凉|359
酒泉|37
庆阳|135
定西|136
陇南|256
临夏回族自治州|182
甘南藏族自治州|247
西宁|66
海东地区|69
海北藏族自治州|67
黄南藏族自治州|70
海南藏族自治州|68
果洛藏族自治州|72
玉树藏族自治州|71
海西蒙古族藏族自治州|65
银川|360
石嘴山|335
吴忠|322
固原|246
中卫|181
乌鲁木齐|92
克拉玛依|95
吐鲁番地区|89
哈密地区|91
昌吉回族自治州|93
博尔塔拉蒙古自治州|88
巴音郭楞蒙古自治州|86
阿克苏地区|85
克孜勒苏柯尔克孜自治州|84
喀什地区|83
和田地区|82
伊犁哈萨克自治州|90
塔城地区|94
阿勒泰地区|96
石河子|770
阿拉尔|731
图木舒克|792
五家渠|789
香港特别行政区|2912
澳门特别行政区|2911
❺ android百度地图api 怎么知道该搜索哪个城市
在onLocationChanged方法里获得自己当前的坐标
然后方法里写 mSearch.reverseGeocode(new GeoPoint((int)(location.getLatitude()*1e6),(int)(location.getLongitude()*1e6)));
然后再通过代码实行这个方法功能
public class MySearchListener implements MKSearchListener {
public void onGetAddrResult(MKAddrInfo result, int error){
MKGeocoderAddressComponent kk=result.addressComponents;
String city=kk.city;
}
}
❻ android 如何实现 省份,城市级联菜单
Android实现省份城市级联菜单的方法:
1、下载的数据库 db_weather.db 放到sdcard/weather 目录下面 方便后续操作
2、使用 SQLite Database Browser 可以打开数据库 查看数据 和表等信息
3、了解了表的构成可以实现操作了androidManifest.xml配置文件声明 添加操作sdcard 权限
4、布局文件main.xml主要使用两个 spinner 分别实现城市 省份的选择
❼ android 如何输入首字母进行地址城市模糊检索
Android中ListView的A-Z字母排序和过滤搜索功能并且实现汉字转成拼音的功能,一般对联系人,城市列表等实现A-Z的排序,因为联系人和城市列表可以直接从数据库中获取它的汉字拼音,而对于一般的数据,实现A-Z的排序,基实只需要将汉字转换成拼音就行了。
以下为步骤:
SortModel 一个实体类,里面一个是ListView的name,另一个就是显示的name拼音的首字母。
2.SideBar类就是ListView右侧的字母索引View,需要使用setTextView(TextView mTextDialog)来设置用来显示当前按下的字母的TextView,以及使用方法来设置回调接口,在回调方法onTouchingLetterChanged(String s)中来处理不同的操作。
3.CharacterParser这个类是将汉字转换成拼音的类,该拼音没有声调的,该类是单例类,其中定义了三个方法,在这个demo中用到的是getSelling(String chs)方法,将词组转换成拼音。
4.ClearEditText类是自定义的一个在右侧有删除图片的EditText,当然也可以用Android原生的EditText,这里就不贴上代码了Android 带清除功能的输入框控件ClearEditText,仿IOS的输入框。
5.SortAdapter 数据的适配器类,该类需要实现SectionIndexer接口,该接口是用来控制ListView分组的。
6.最后运行效果
❽ android开发省市区城市选择器怎么实现
发现一个好用的省市区城市选择器,感觉挺好用的。
实现好的省市县区选择器,可以用来参考设计,用网页语言做的,可以在android环境中使用。