好久好久没光顾过自己空空的博客了,做项目的时候都是逛着别人的博客急着把功能实现,近来闲下来了总结总结。
这个城市选择功能也是当时做项目急着实现从哪找来的框架不记得了,然后改改用到项目中来的。
非常感谢提供最初源码的博主,主要的区别是添加了搜索功能、定位功能,把以前的操作本地数据库sqlite的部分,改为操作对assest文件的操作,封装的有百度地图定位方法、可删除的edittext。
百度地图的key需要改成自己的。
由于时间关系暂时代码注释较少。
大神可自动忽略以下内容。
适配器采用嵌套的方式实现:最外层适配器根据position的不同,设置不同的布局。
1、当前城市采用百度定位:因为百度地图的配置和定位实现简单,就不单独写博客了。在androidmainfest文件中配置百度地图的key值和权限。
百度地图定位的封装类在LocationUtils中。代码中在当前城市的右侧有个市区的显示,gridview加载的数据,按钮已隐藏。
<!-- *************************************百度地图配置 Start**************************************** --> <service android:name="com.baidu.location.f" android:enabled="true" android:exported="false" android:permission="android.permission.BAIDU_LOCATION_SERVICE" android:process=":remote"> <intent-filter> <action android:name="com.baidu.location.service_v3.6" /> </intent-filter> </service> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="L1AGmh99HClNQLRNyPrMYpvLsuiuDRl9" /> <!-- *************************************百度地图配置 End**************************************** -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_SETTINGS" />2、最近 访问的城市做了一个3列的gridview,里面数据来源是:当用户选择一个城市后会把对象存到sp文件中,当用户再次进入该界面的时候首先读取sp文件list显示。
3、热门城市gridview可以从后台获得,也可以在android端写死。
4、全部城市的数据来源在assets文件夹下有个cityjson.txt文件用于存放整理好的数据。读取assets文件指定文件内容。
5、listview的监听
setOnScrollListener
根据状态的改变去控制listview:滚动过程handle更新当前首字母。
6、重点是右侧选项卡的绘制和选择,计算单个字母的高度,根据高度计算每个字母的偏移量。绘制每个每个字母的位置。 手势的控制,点击时重绘invalidate()。
取list中点击项首字母所在位置 然后lv.setposition此时同样用handle刷新界面弹出的字母框,1s消失。
上传一张图,代码片段就不摘了。有需要可以下载
源码下载地址:http://download.csdn.net/detail/qq_15855289/9707985