安卓开发用spinning方式显示js二级联动省市代码列表代码

> &>&&>&&>&正文
  代码如下:
  Java code:
  package zye.client.C
  import android.app.A  import android.content.C  import android.os.B  import android.view.V  import android.widget.AdapterV  import android.widget.ArrayA import android.widget.S  import android.widget.AdapterView.OnItemSelectedL
  public class cityset extends Activity{  &&& private String[] province = new String[] {"直辖市", "特别行政区","黑龙江"};  &&& private String[] city = new String[]{"北京","上海","天津","重庆"};  &&& private String[][] pandc = new String[][]{{"北京","上海","天津","重庆"},{"香港","澳
  门"},{"哈尔滨","齐齐哈尔","牡丹江","大庆","伊春","双鸭山","鹤岗","鸡西","佳木斯","七台河","黑河","绥化","大兴安岭"}};&&&   private S&&&   private Spinner sp2;&&&   private C
&&&   ArrayAdapter&String&
&&&   ArrayAdapter&String& adapter2; &&& &&&&   public void onCreate(Bundle savedInstanceState) {&&&&  &&&& super.onCreate(savedInstanceState);&&&&  &&&& setContentView(R.layout.cityset);
  context =&&&&&&&& &&&&&&&&  &&& adapter = new ArrayAdapter&String&(this,android.R.layout.simple_spinner_item, province); &&&&&&&&&&&   adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); &&&&&&&&&&&   sp = (Spinner) findViewById(R.id.province); &&&&&&&&&&&   sp.setAdapter(adapter);&&&&&&&&&&&   sp.setOnItemSelectedListener(selectListener);&&&&&&&&&&&&&&&&&&&&&&&&  adapter2 = new ArrayAdapter&String&(this,android.R.layout.simple_spinner_item, city); &&&&&&&&&&& adapter2.setDropDownViewResource
  (android.R.layout.simple_spinner_dropdown_item);   &&&&&&&&&&& sp2 = (Spinner) findViewById(R.id.city);  &&&&&&&&&&& sp2.setAdapter(adapter2);&&&&&&&&&&&   &&& }&&&&   &&&& private OnItemSelectedListener selectListener = new OnItemSelectedListener(){  &&&&&&&& public void onItemSelected(AdapterView parent, View v, int position,long id){  &&&&&&&&&&&& int pos = sp.getSelectedItemPosition();  &&&&&&&&&&&& adapter2 = new ArrayAdapter&String&
  (context,android.R.layout.simple_spinner_item, pandc[pos]);  &&&&&&&&&&&& sp2.setAdapter(adapter2);  &&&&&&&& }&&&&&&   &&&&&&&& public void onNothingSelected(AdapterView arg0){
&&&&&&&& }
  xml code:
  &?xml version="1.0" encoding="utf-8"?&  &RelativeLayout xmlns:android="/apk/res/android"  &&& android:layout_width="fill_parent"  &&& android:layout_height="fill_parent"  &&& android:background="#FFFFFF"  &&& &  &&& &Spinner android:id="@+id/province"   &&&&&&& android:layout_width="fill_parent"   &&&&&&&&& android:layout_height="45px"  &&&&&&&&& android:layout_marginLeft="75px"  &&&&&&&&& android:layout_marginRight="20px"  &&&&&&& android:layout_marginTop="7px"   &&&&&&&& android:drawSelectorOnTop="true"  &&&&&&&& android:layout_alignParentRight="true"   &&& /&  &&&&&& &Spinner android:id="@+id/city"   &&&&&&& android:layout_width="fill_parent" &&&&  &&&&& android:layout_height="45px"&&&&  &&&&& android:layout_marginLeft="75px"&&&&  &&&&& android:layout_marginRight="20px"&&&&  &&& android:layout_marginTop="3px" &&&&  &&&& android:drawSelectorOnTop="true"&&&&  &&&& android:layout_alignParentRight="true" &&&&  &&&& android:layout_below="@id/province" &&&& &&&& /&&&&&&   &/RelativeLayout&
提示:支持键盘“← →”键翻页5457人阅读
Android(28)
因为工作的关系,需要做一个省市二级联动。
1、首先,实现这个功能所用到的控件是android 的spinner
2、要做一个省市二级联动,首先我们要有所有省及其主要城市的数据,这里我给一个我的百度云的链接。大家可以自行前去下载
3、下面是我对该资料,及省市二级联动实现的分析
二级联动思路整理
这个json数据太大了,不能每次都循环遍历所有数据
1首先要获得省的列表
在json数据中,所有fGuid的值都为0,可以根据这个得到所有的省的列表。可以只解析前34个json数据的值(省的信息排在该json的前面,34已经足够将所有的省的信息获取到),可以有效的减少程序运行
2将省的信息放入spinner中
3省被选择后要获得城市的信息
城市的fGuid的值都不为空,fGuid的值代表的是城市所属的省,他的值是省的Guid的值。所以,所有省的Guid值都必须被保存
这时判断json中的fGuid就可以得出所有该省城市的数据
同一个省的城市在该json数据中都是连续的。当找到一个属于该省的程序后,如果连续出现五个不属于该省的城市,查找停止。
4用户点击所选城市时,所需要的最终数据是cityNo其他都是不用的。所以,要抽取出来的数据就是cityName(用于spinner显示),cityNo 实际要用的数据
总结: 省需要获取的信息是省的cityName(用于spinner显示)、guid(用于查找该省下的城市)
城市需要获得的信息是cityName(用于spinner显示)、cityNo
4以下是我实现二级联动的代码
package com.
import java.io.BufferedR
import java.io.IOE
import java.io.InputS
import java.io.InputStreamR
import java.io.UnsupportedEncodingE
import java.util.HashM
import org.json.JSONA
import org.json.JSONE
import org.json.JSONO
import android.app.A
import android.content.C
import android.os.B
import android.util.L
import android.view.M
import android.view.V
import android.widget.AdapterV
import android.widget.AdapterView.OnItemSelectedL
import android.widget.ArrayA
import android.widget.S
import android.widget.T
public class MainActivity extends Activity {
HashMap&String, String& provinceHash = new HashMap&String, String&();
String[] provinceString = new String[34];
HashMap&String, String& cityHash = new HashMap&String, String&();
String[] cityS
String cityNo = null;
private ArrayAdapter&String& proviceA
private ArrayAdapter&String& cityA
Spinner provinceS
Spinner cityS
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
provinceSpinner = (Spinner) findViewById(R.id.spinnerprovince);
citySpinner = (Spinner) findViewById(R.id.spinnercity);
file = readFile();
getProvinces(file);
proviceAdapter = new ArrayAdapter&String&(this,
android.R.layout.simple_spinner_item, provinceString);
proviceAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
provinceSpinner.setAdapter(proviceAdapter);
provinceSpinner.setOnItemSelectedListener(new ProvinceSelectedListener(
MainActivity.this));
provinceSpinner.setVisibility(View.VISIBLE);
public String readFile() {
InputStream myFile = null;
myFile = getResources().openRawResource(R.raw.ub_city);
BufferedReader br = null;
br = new BufferedReader(new InputStreamReader(myFile, "utf-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
Log.e("debug", e.toString());
String str = "";
while ((temp = br.readLine()) != null) {
str = str +
br.close();
myFile.close();
} catch (IOException e) {
e.printStackTrace();
return "error";
public void getProvinces(String jsonData) {
JSONArray jsonArray = null;
jsonArray = new JSONArray(jsonData);
for (int i = 0; i & 34; i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String guid = jsonObject.getString("guid");
String cityName = jsonObject.getString("cityName");
provinceHash.put(cityName, guid);
provinceString[i] = cityN
} catch (JSONException e) {
e.printStackTrace();
public String[] getCitys(String guid, String jsonData) {
cityHash.clear();
String[] cityBuffer = new String[21];
int j = 0;
JSONArray jsonA
jsonArray = new JSONArray(jsonData);
int length = jsonArray.length();
int i = 33;
int continuous = 0;
boolean isFind = false;
while (i & length) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String fGuid = jsonObject.getString("fGuid");
String cityName = jsonObject.getString("cityName");
String cityNo = jsonObject.getString("cityNo");
if (fGuid.equals(guid)) {
isFind = true;
cityHash.put(cityName, cityNo);
cityBuffer[j] = cityN
if (isFind == true) {
continuous += 1;
if (continuous & 5) {
Log.i("zhiyinqing", "城市数:" + j);
} catch (JSONException e) {
e.printStackTrace();
String[] citys = new String[j];
for(int i=0;i&j;i++){
citys[i] = cityBuffer[i];
class ProvinceSelectedListener implements OnItemSelectedListener {
public void onItemSelected(AdapterView&?& arg0, View arg1, int arg2,
long arg3) {
String provinceName = provinceString[arg2];
Toast.makeText(context, provinceName, Toast.LENGTH_LONG).show();
String guid = provinceHash.get(provinceName);
cityString = getCitys(guid, file);
cityAdapter = new ArrayAdapter&String&(context,
android.R.layout.simple_spinner_item, cityString);
cityAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
citySpinner.setAdapter(cityAdapter);
citySpinner.setOnItemSelectedListener(new CitySelectedListener());
citySpinner.setVisibility(View.VISIBLE);
public void onNothingSelected(AdapterView&?& arg0) {
public ProvinceSelectedListener(Context context) {
this.context =
class CitySelectedListener implements OnItemSelectedListener {
public void onItemSelected(AdapterView&?& arg0, View arg1, int arg2,
long arg3) {
String cityName = cityString[arg2];
if (cityName.equals("") || cityName == null) {
cityName = cityString[0];
cityNo = cityHash.get(cityName);
cityNo = cityHash.get(cityName);
Log.i("zhiyinqing", "cityNo" + cityNo);
public void onNothingSelected(AdapterView&?& arg0) {
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:56330次
积分:1309
积分:1309
排名:千里之外
原创:67篇
(4)(4)(1)(1)(1)(3)(3)(3)(1)(4)(10)(34)(3)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'& & && 在很多商业的App中都需要进行城市的选择,一般我们会对城市按首字母进行排序,以前的项目中也曾经遇到,今天拿来复习一下。思路如下:
&&&&& 1.首先我们需要一个包含全国各城市的数据库文件或Json,Xml文件都可以,我从网络上搜到了一个数据库.db的文件,该数据库包含了中国各城市的中文名称以及首字母。首先将该数据库文件拷贝到我们的工程目录的res/raw文件夹之下(该文件夹不会被Android编译),当我们访问数据库时首先检查该数据库文件是否存在(一般数据库文件会被Android系统放在/data/data/packagename/databases文件夹之下),如果不存在则将数据库拷贝过来。之后可以按首字母排序查询数据库。
&&&&&& 2.对于快速定位的实现:使用QuickLocationBar来进行实现,使用一个HashMap保存首字母和该首字母城市的第一个出现的位置,在OnTouchLetterChangedListener中实现ListView的快速定位。关于QuickLocationBar的实现的具体细节请看我之前的博客:
代码如下:
CityActivity类:
package com.example.
import java.util.ArrayL
import java.util.HashM
import android.app.A
import android.database.C
import android.database.sqlite.SQLiteD
import android.os.B
import android.view.V
import android.widget.AdapterV
import android.widget.AdapterView.OnItemClickL
import android.widget.ListV
import android.widget.TextV
import android.widget.T
import com.example.citytest.widget.QuicLocationB
import com.example.citytest.widget.QuicLocationBar.OnTouchLetterChangedL
public class CityActivity extends Activity {
private ListView mCityL
private TextV
private QuicLocationBar mQuicLocationB
private HashMap&String, Integer& alphaI
private ArrayList&CityBean& mCityN
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_city);
mQuicLocationBar = (QuicLocationBar) findViewById(R.id.city_loactionbar);
mQuicLocationBar
.setOnTouchLitterChangedListener(new LetterListViewListener());
overlay = (TextView) findViewById(R.id.city_dialog);
mCityLit = (ListView) findViewById(R.id.city_list);
mQuicLocationBar.setTextDialog(overlay);
initList();
private void initList() {
mCityNames = getCityNames();
CityAdapter adapter = new CityAdapter(CityActivity.this, mCityNames);
mCityLit.setAdapter(adapter);
alphaIndexer = adapter.getCityMap();
mCityLit.setOnItemClickListener(new CityListOnItemClick());
private ArrayList&CityBean& getCityNames() {
CityDBManager dbManager = new CityDBManager(CityActivity.this);
dbManager.openDateBase();
dbManager.closeDatabase();
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(CityDBManager.DB_PATH
+ &/& + CityDBManager.DB_NAME, null);
ArrayList&CityBean& names = new ArrayList&CityBean&();
Cursor cursor = database.rawQuery(
&SELECT * FROM T_City ORDER BY NameSort&, null);
if (cursor.moveToFirst()) {
CityBean cityModel = new CityBean();
cityModel.setCityName(cursor.getString(cursor
.getColumnIndex(&CityName&)));
cityModel.setNameSort(cursor.getString(cursor
.getColumnIndex(&NameSort&)));
names.add(cityModel);
} while (cursor.moveToNext());
database.close();
private class CityListOnItemClick implements OnItemClickListener {
public void onItemClick(AdapterView&?& arg0, View arg1, int pos,
long arg3) {
CityBean cityModel = (CityBean) mCityLit.getAdapter()
.getItem(pos);
Toast.makeText(CityActivity.this, cityModel.getCityName(),
Toast.LENGTH_SHORT).show();
private class LetterListViewListener implements
OnTouchLetterChangedListener {
public void touchLetterChanged(String s) {
// TODO Auto-generated method stub
if (alphaIndexer.get(s) != null) {
int position = alphaIndexer.get(s);
mCityLit.setSelection(position);
Activity的布局文件:&?xml version=&1.0& encoding=&utf-8&?&
&FrameLayout xmlns:android=&/apk/res/android&
android:layout_width=&match_parent&
android:layout_height=&match_parent& &
&LinearLayout
android:layout_width=&fill_parent&
android:layout_height=&fill_parent&
android:layout_gravity=&center&
android:orientation=&vertical& &
android:id=&@+id/city_list&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:layout_gravity=&center&
android:divider=&@color/lightgray&
android:dividerHeight=&2dp& /&
&/LinearLayout&
android:id=&@+id/city_dialog&
android:layout_width=&80.0dip&
android:layout_height=&80.0dip&
android:layout_gravity=&center&
android:gravity=&center&
android:textColor=&@color/myblack&
android:textSize=&30.0sp&
android:visibility=&gone& /&
&com.example.citytest.widget.QuicLocationBar
android:id=&@+id/city_loactionbar&
android:layout_width=&30.0dip&
android:layout_height=&fill_parent&
android:layout_gravity=&right|center&
android:paddingBottom=&2dp& /&
&/FrameLayout&
CityAdapter类,ListView适配
package com.example.
import java.util.HashM
import java.util.L
import android.content.C
import android.view.LayoutI
import android.view.V
import android.view.ViewG
import android.widget.BaseA
import android.widget.TextV
* ListView适配
* 提供一个方法来获得 保存首字母和该首字母城市的第一个出现的位置HashMap
* 通过记录前一个首字母与当前首字母是否相同,如果不同加入HashMap中同时显示该字母
* @author acer
public class CityAdapter extends BaseAdapter {
private LayoutI
private List&CityBean&
private HashMap&String, Integer& alphaI
private String[]
public CityAdapter(Context context, List&CityBean& list) {
this.inflater = LayoutInflater.from(context);
this.list =
alphaIndexer = new HashMap&String, Integer&();
sections = new String[list.size()];
for (int i = 0; i & list.size(); i++) {
String currentStr = list.get(i).getNameSort();
String previewStr = (i - 1) &= 0 ? list.get(i - 1).getNameSort()
if (!previewStr.equals(currentStr)) {//前一个首字母与当前首字母不同时加入HashMap中同时显示该字母
String name = list.get(i).getNameSort();
alphaIndexer.put(name, i);
sections[i] =
public HashMap&String, Integer& getCityMap(){
return alphaI
public int getCount() {
return list.size();
public Object getItem(int position) {
return list.get(position);
public long getItemId(int position) {
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.item_city, null);
holder = new ViewHolder();
holder.alpha = (TextView) convertView
.findViewById(R.id.item_city_alpha);
holder.name = (TextView) convertView
.findViewById(R.id.item_city_name);
convertView.setTag(holder);
holder = (ViewHolder) convertView.getTag();
holder.name.setText(list.get(position).getCityName());
String currentStr = list.get(position).getNameSort();
String previewStr = (position - 1) &= 0 ? list.get(position - 1)
.getNameSort() : & &;
if (!previewStr.equals(currentStr)) {
holder.alpha.setVisibility(View.VISIBLE);
holder.alpha.setText(currentStr);
holder.alpha.setVisibility(View.GONE);
return convertV
private class ViewHolder {
CityBean类:package com.example.
* 记录每一个城市的中文名称及首字母
* @author acer
public class CityBean {
private String firstA
public String getCityName() {
public void setCityName(String cityName) {
name = cityN
public String getNameSort() {
return firstA
public void setNameSort(String nameSort) {
firstAlpha = nameS
ListView中Item显示的布局文件
&?xml version=&1.0& encoding=&utf-8&?&
&RelativeLayout xmlns:android=&/apk/res/android&
android:layout_width=&match_parent&
android:layout_height=&match_parent& &
android:id=&@+id/item_city_alpha&
android:layout_width=&fill_parent&
android:layout_height=&25dp&
android:background=&@color/darkgray&
android:paddingLeft=&13dip&
android:textAppearance=&?android:textAppearanceMedium&
android:textColor=&@color/myred& /&
android:id=&@+id/item_city_name&
android:layout_width=&wrap_content&
android:layout_height=&35dp&
android:layout_below=&@id/item_city_alpha&
android:layout_margin=&15.0dip&
android:singleLine=&true&
android:text=&name&
android:textAppearance=&?android:textAppearanceMedium&
android:textColor=&#212121& /&
&/RelativeLayout&CityDBManager数据库管理类package com.example.
import java.io.F
import java.io.FileNotFoundE
import java.io.FileOutputS
import java.io.IOE
import java.io.InputS
import android.content.C
import android.database.sqlite.SQLiteD
import android.os.E
* 数据库管理类
* 访问数据库时首先检查该数据库文件是否存在,如果不存在进行拷贝操作
* @author acer
public class CityDBManager {
private final int BUFFER_SIZE = 10240;
private static final String PACKAGE_NAME = &com.example.citytest&;
public static final String DB_NAME = &china_city_name.db&;
public static final String DB_PATH = &/data&
+ Environment.getDataDirectory().getAbsolutePath() + &/&
+ PACKAGE_NAME + &/databases&;
private Context mC
private SQLiteD
public CityDBManager(Context context) {
this.mContext =
public void openDateBase() {
this.database = this.openDateBase(DB_PATH + &/& + DB_NAME );
private SQLiteDatabase openDateBase(String dbFile) {
File file = new File(dbFile);
if (!file.exists()) {
File folder = new File(DB_PATH);
if (!folder.exists()) {
folder.mkdir();
InputStream stream = mContext.getResources().openRawResource(
R.raw.china_city_name);
FileOutputStream outputStream = new FileOutputStream(dbFile);
byte[] buffer = new byte[BUFFER_SIZE];
int count = 0;
while ((count = stream.read(buffer)) & 0) {
outputStream.write(buffer, 0, count);
outputStream.close();
stream.close();
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbFile,
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
public void closeDatabase() {
if (database != null && database.isOpen()) {
this.database.close();
QuickLocationBar快速定位侧边栏
package com.example.citytest.
import android.content.C
import android.graphics.C
import android.graphics.P
import android.graphics.T
import android.util.AttributeS
import android.view.MotionE
import android.view.V
import android.widget.TextV
import com.example.citytest.R;
* 快速定位侧边栏
* 在OnTouchLetterChangedListener中对点击当前的字母做处理
* 需要设置一个TextView来显示当前点击的字母
* @author acer
public class QuicLocationBar extends View {
private String characters[] = { &#&, &A&, &B&, &C&, &D&, &E&, &F&, &G&,
&H&, &I&, &J&, &K&, &L&, &M&, &N&, &O&, &P&, &Q&, &R&, &S&, &T&,
&U&, &V&, &W&, &X&, &Y&, &Z& };
private int choose = -1;
private Paint paint = new Paint();
private OnTouchLetterChangedListener mOnTouchLetterChangedL
private TextView mTextD
public QuicLocationBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
public QuicLocationBar(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
public QuicLocationBar(Context context) {
super(context);
// TODO Auto-generated constructor stub
public void setOnTouchLitterChangedListener(
OnTouchLetterChangedListener onTouchLetterChangedListener) {
this.mOnTouchLetterChangedListener = onTouchLetterChangedL
public void setTextDialog(TextView dialog) {
this.mTextDialog =
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
int width = getWidth();
int height = getHeight();
int singleHeight = height / characters.
for (int i = 0; i & characters. i++) {
// 对paint进行相关的参数设置
paint.setColor(getResources().getColor(R.color.myblack));
paint.setTypeface(Typeface.DEFAULT_BOLD);
paint.setAntiAlias(true);
paint.setTextSize(150*(float) width/320);
if (i == choose) {// choose变量表示当前显示的字符位置,若没有触摸则为-1
paint.setColor(getResources().getColor(R.color.myred));
paint.setFakeBoldText(true);
// 计算字符的绘制的位置
float xPos = width / 2 - paint.measureText(characters[i]) / 2;
float yPos = singleHeight * i + singleH
// 在画布上绘制字符
canvas.drawText(characters[i], xPos, yPos, paint);
paint.reset();// 每次绘制完成后不要忘记重制Paint
public boolean dispatchTouchEvent(MotionEvent event) {
int action = event.getAction();
float y = event.getY();
int c = (int) (y / getHeight() * characters.length);
switch (action) {
case MotionEvent.ACTION_UP:
choose = -1;//
setBackgroundColor(0x0000);
invalidate();
if (mTextDialog != null) {
mTextDialog.setVisibility(View.GONE);
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
setBackgroundColor(getResources().getColor(R.color.darkgray));
if (choose != c) {
if (c &= 0 && c & characters.length) {
if (mOnTouchLetterChangedListener != null) {
mOnTouchLetterChangedListener
.touchLetterChanged(characters[c]);
if (mTextDialog != null) {
mTextDialog.setText(characters[c]);
mTextDialog.setVisibility(View.VISIBLE);
invalidate();
public interface OnTouchLetterChangedListener {
public void touchLetterChanged(String s);
本文已收录于以下专栏:
相关文章推荐
在上一篇中实现了,先自定义数据源,使Adapter通过实现SectionIndexer接口给ListView分组,并用Collections.sort对数据list进行排序。
记得在我刚开始接触到美团网的时候就对美团网这个城市定位、选择城市功能很感兴趣,觉得它做得很棒。有如下几个点:
一:实现ListView的A-Z字母排序功能
二:根据输入框的输入值改变来过滤搜索结果...
记得在我刚开始接触到美团网的时候就对美团网这个城市定位、选择城市功能很感兴趣,觉得它做得很棒。有如下几个点:
一:实现ListView的A-Z字母排序功能
二:根据输入框的输入值改变来过滤搜索...
短短的国庆8天假期一眨眼就过去了,下次长假只有等到过年了,本宝宝不开心。既然已经开始工作了,就要好好多学习点新知识,来提高自己的代码能力,今天带大家去实现简易的选择城市界面。先来看下我的效果图:
前段时间因为换工作的缘故又恰巧碰到国庆节,所以有段时间自己没有更新博客了,过完国庆到新公司报道,感觉还不错,就是现在住的地方离新公司有点远,地铁20站,伤不起啊,我每天早上7点多就要起床,然后屁颠屁颠...
在许多应用中,可以看到全国的城市,并且都是按照汉字首字母A-Z排序,同时包含1、2、3、4声排序。如何做到?
1、使用第三方jar:pinyin4j,可以实现汉字转化为拼音,并且可以带声调,如:北京...
public class Activity01 extends Activity implements OnScrollListener {
private DatabaseHelper helpe...
我们在写项目时,有时候会需要用到显示中国城市列表,区域列表甚至邮政编码等。比如我最近在做的就是在popwindow 显示中国城市,然后二级显示城市区域列表,还有就是收货地址,买票填写的地址等等,都需要...
他的最新文章
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 js二级联动省市代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信