❶ 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環境中使用。