//本文是作者原创文章,其中的代码部分引用了网上现有的demo,感谢大神们无私的奉献各种demo,转载请注明出处
今天在写公司的一个项目,其中用到了定位的功能,想到网上有很多现成的demo,兴致冲冲的找了很多demo,都没有想要的效果,网上现有的demo获取数据的方法大致分为两种:
<1> 将包含了地址信息的数据库文件(.db文件)存在项目的assets文件里面。
<2> 将地址信息放在arrays.xml文件里面,例如:
<string-array name="city">
<item>北京</item>
<item>成都</item>
<item>重庆</item>
<item>广州</item>
<item>杭州</item>
<item>南京</item>
<item>上海</item>
<item>深圳</item>
<item>天津</item>
<item>武汉</item>
<item>西安</item>
</string-array>
然而这些都不是我想要的效果,Boss要求地址的数据在后期是可以修改的,
所以获取地址就必要链接网络服务器,在网上找了个仿美图的地址选择器,页面效果如下:
然而打开demo后就绝望了,
自动定位的功能只能看不能用就算了,用的竟然是第二种方法存数据…..
那岂不是说我得将300多条数据一点点的写到arrays.xml文件里面?于是仔细的看了该demo的代码,修改如下:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Build;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SectionIndexer;
import android.widget.TextView;
import android.widget.Toast;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;
import com.example.myapplication.R;
import com.example.myapplication.model.bean.CitySortModel;
import com.example.myapplication.model.db.CityHelper;
import com.example.myapplication.model.utils.ACache;
import com.example.myapplication.model.utils.PortUtils;
import com.example.myapplication.model.utils.SystemBarTintManager;
import com.example.myapplication.view.activity.BaseActivity;
import com.example.myapplication.view.selectcity.view.EditTextWithDel;
import com.example.myapplication.view.selectcity.view.PinyinComparator;
import com.example.myapplication.view.selectcity.view.PinyinUtils;
import com.example.myapplication.view.selectcity.view.SideBar;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.x;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
/*
* 城市选择和定位
* */
public class CityActivity extends BaseActivity {
private String TAG = "CityActivity";
private ListView sortListView;
private SideBar sideBar;
private TextView dialog, mTvTitle;
private SortAdapter adapter;
private EditTextWithDel mEtCityName;
private List<CitySortModel> SourceDateList;

本文记录了安卓开发中遇到的定位问题和SQLite数据库操作难题。针对网络定位,作者需要实现可动态更新的地址数据,避免使用静态的.db文件或arrays.xml。通过修改现有demo,成功实现了网络获取地址。在SQLite操作中遇到数据库锁定问题,通过启动Service解决。此外,还提醒开发者注意在AndroidManifest.xml中注册Service,以防止服务无法开启。
最低0.47元/天 解锁文章
459

被折叠的 条评论
为什么被折叠?



