Json字符串绑定自定义ListView
来源:互联网 发布:怎么下载淘宝号 编辑:程序博客网 时间:2024/06/01 08:07
先看效果图:
客户端(手机)从服务器检索数据时,服务器检索的结果集resultSet属于重量级的数据结构。所以大伙都将resultSet转变为JSon字符串,瘦身后再传给客户端。
JSon字符串的格式如下:
private String str_Json= " {\"result\":["
+"{\"user_name\":\"admin\",\"user_phone\":\"13612341234\",\"user_id\":\"1\"},"
+"{\"user_name\":\"张三\",\"user_phone\":\"13612341235\",\"user_id\":\"2\"},"
+"{\"user_name\":\"李四\",\"user_phone\":\"13612341236\",\"user_id\":\"3\"}"
+"]}";
注:斜杠是转义符,不知道的问度娘。
不啰嗦了,直接上代码了。
publicclass MainActivity extends Activity {
private ListView listView;
private String str_Json = " {\"result\": ["
+"{\"user_name\":\"admin\",\"user_phone\":\"13612341234\",\"user_id\":\"1\"},"
+"{\"user_name\":\"张三\",\"user_phone\":\"13612341235\",\"user_id\":\"2\"},"
+"{\"user_name\":\"李四\",\"user_phone\":\"13612341236\",\"user_id\":\"3\"}"
+ "]}";
@Override
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i("infoinfo","str_json:" + str_Json);
listView = (ListView)findViewById(R.id.listView1);
List<Map<String, Object>>list = getData();
listView.setAdapter(new MyAdspter(this,list));
return;
}
private List<Map<String, Object>>getData() {
List<Map<String, Object>>list = new ArrayList<Map<String, Object>>();
try {
JSONObject jsonObject = newJSONObject(str_Json);
JSONArray aNews = newJSONArray(jsonObject.getString("result"));
for (int i = 0; i <aNews.length(); i++) {
Map<String, Object>map = new HashMap<String, Object>();
map.put("user_id",aNews.getJSONObject(i).getString("user_id"));
map.put("user_name",
aNews.getJSONObject(i).getString("user_name"));
map.put("user_phone",
aNews.getJSONObject(i).getString("user_phone"));
list.add(map);
}
} catch (JSONException ex) {
Log.i("infoinfo","JSON Error: " + ex.toString());
}
return list;
}
}
自定义显示行的XML文件是非常简单的,这里不啰嗦了。
最难的是适配器,我是扒网上的,大伙参考一下就好。
public classMyAdspter extendsBaseAdapter {
private int[] imgesIds = new int[]{R.drawable.id01,R.drawable.id02,
R.drawable.id03,R.drawable.id04,R.drawable.id05};
privateList<Map<String, Object>> data;
privateLayoutInflater layoutInflater;
privateContext context;
publicMyAdspter(Context context,List<Map<String, Object>> data){
this.context=context;
this.data=data;
this.layoutInflater=LayoutInflater.from(context);
}
/**
* 组件集合,对应list.xml中的控件
* @author Administrator
*/
publicfinalclassZujian{
public ImageView img_id;
public TextView tv_id;
public TextView tv_name;
public TextView tv_phone;
}
@Override
publicintgetCount() {
return data.size();
}
/**
* 获得某一位置的数据
*/
@Override
publicObject getItem(intposition) {
return data.get(position);
}
/**
* 获得唯一标识
*/
@Override
publiclonggetItemId(intposition) {
return position;
}
@Override
publicView getView(intposition, View convertView, ViewGroup parent) {
Zujian zujian=null;
if(convertView==null){
zujian=new Zujian();
//获得组件,实例化组件
convertView=layoutInflater.inflate(R.layout.custom_user, null);
zujian.img_id =(ImageView) convertView.findViewById(R.id.imageView1);
zujian.tv_id=(TextView)convertView.findViewById(R.id.tv_user_id);
zujian.tv_name=(TextView)convertView.findViewById(R.id.tv_user_name);
zujian.tv_phone=(TextView)convertView.findViewById(R.id.tv_user_phone);
convertView.setTag(zujian);
}else{
zujian=(Zujian)convertView.getTag();
}
//绑定数据
zujian.img_id.setImageResource(imgesIds[position]);
zujian.tv_id.setText((String)data.get(position).get("user_id"));
zujian.tv_name.setText((String)data.get(position).get("user_name"));
zujian.tv_phone.setText((String)data.get(position).get("user_phone"));
return convertView;
}
}
ListView本身是可以纵向滑动的。如果嵌套在横向滑动控件就能实现双向滑动。对于展示数据是非常适合的。
- Json字符串绑定自定义ListView
- 自定义适配器--ListView数据源的绑定
- json串最外层是[] +自定义ListView
- Gson解析json绑定到listview 出学安卓,求大神指导
- Android Studio ListView列表绑定网络JSON数据
- ListView 数据绑定、数据汇总及自定义排序示例
- KSOAP解析webService绑定到自定义适配器listView中显示
- 020自定义BaseAdapter,然后绑定ListView的最简单例子
- Android 自定义Listview 如何绑定Sqlite数据库数据
- 绑定listview
- 绑定ListView
- 微信自定义菜单json字符串解析
- 使用json.net 组件 生成JSON字符串,自定义日期格式
- 自定义JSON字符串类【map转换json格式】
- ListView简单实用-自定义BaseAdapter,然后绑定ListView的最简单例子
- 从essets中获取json字符串并放到listview
- ASP.NET WebApi MediaTypeFormatter参数绑定的研究,支持POST文本方式的JSON字符串绑定
- JAVA学习笔记--线程请求Json数据,并解析绑定到listView
- 构造器与析构器
- java工厂模式
- 个人算法与数据结构心得
- React学习(三)refs属性
- DirectX11笔记(六)--Direct3D渲染2--VERTEX BUFFER
- Json字符串绑定自定义ListView
- 阿里工程师看待学习和工作
- 异常处理
- 浏览器标签tab窗口切换时事件状态侦听
- Permission denied (publickey,gssapi-keyex,gssapi-with-mic).的完整解决方法
- c++ primer 学习笔记2
- 浅析DispatcherServlet
- Redis数据类型之String
- Android 6.0权限笔记