相对于eoe那个案例略微改动了一下,利用json存储全国城市数据,并且读取实现动态绑定。
首先准备数据:数据格式如下:
第二:读取json数据,由于json数据较多我把数据写成了本地数据并实现读取,如下:
JSONObject jsonObject = new JSONObject(json);// //解析info数组,解析中括号括起来的内容就表示一个数组,使用JSONArray对象解析 JSONArray array = jsonObject.getJSONArray("City");for(int i = 0; i < array.length(); i++) {JSONObject item = array.getJSONObject(i);String strname="";String strIteam=""; String strkey = ""; for (int j = 0; j < strkeys.length; j++) { JSONArray arrayItem = item.getJSONArray(strkeys[j]); for(int count=0;count<arrayItem.length();count++){
TestData data=new TestData();
JSONObject jsonItem=arrayItem.getJSONObject(count);
strname=jsonItem.getString("name");
strkey=jsonItem.getString("key");
data.setName(strname);
//自行设置
data.setKey(strkey);
datas.add(data);
}
}
}
}
return datas;
以上是实现的大部分源码,另外本人还进行了其他扩展,其中还有一些功能属性可以设置:
如果要实现点击右边导航弹出悬浮框:LetterToast.getInstance(mContext).showToast(s);//弹出悬浮框显示你选的字母导航
如果要实现点击其中莫一项就提示你选择的城市(letterListView.setOnItemClickListener):
TextView tvname=(TextView)arg0.getChildAt(arg2).findViewById(R.id.name);//获取点击城市的文本框
Toast.makeText(MainActivity.this, tvname.getText(), Toast.LENGTH_SHORT).show();//显示点击的项目名称
运行效果图:
经过网友反映说,滑动后点击会奔溃报错,我回去看了下代码,改动了后发现这个问题可以解决:在MainActivity.java里面把
TextView tvname=(TextView)arg0.getChildAt(arg2).findViewById(R.id.name);//获取点击城市的名字
改为:TextView tvname=(TextView)arg1.findViewById(R.id.name);//获取点击城市的名字
即可
另外本人从新修改了上传到CSDN下载,谢谢大家的支持
本程序源码,请移步: