Gson学习
来源:互联网 发布:以下哪种立体匹配算法 编辑:程序博客网 时间:2024/05/21 09:09
补充知识点json的表现形式:
什么是Gson
Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。即把json转为为java对象或者把对象转换为json.下面这段代码就是Gson把json数据转换为java对象的。
private PhotosData data; Gson gson = new Gson(); data = gson.fromJson(result, PhotosData.class); //result为jason字符串
示例
gson解析一个列表Gson gson = new Gson();Book book = gson.fromJson(result, Book.class);Log.i("info", book.getTitle() + ":" + book.getPublisher() + ":"+ book.getTags().size());
实体类Book:
public class Book {private String id;private String catlog;public String getId() {return id; }public void setId(String id) {this.id = id; }public String getCatlog() {return catlog; }public void setCatlog(String catlog) {this.catlog = catlog; }}
用Gson解析json字符串,然后传给 PhotoData的对象 data,接着data获得list对象,后面的代码就是把数据list放入适配器,并显示在lvPhoto(listView)中
// private PhotosData data;// private List<PhotosData.ListBean> mPhotoList; Gson gson = new Gson(); data = gson.fromJson(result, PhotosData.class); mPhotoList = data.getList();// 获取组图列表集合 if (mPhotoList != null) { mAdapter = new PhotoAdapter(); lvPhoto.setAdapter(mAdapter); }
适配器
这种写法是适配在一个java文件,还有一种写法就是把适配器单独放在一个包中
//listView显示 class PhotoAdapter extends BaseAdapter { private BitmapUtils utils; public PhotoAdapter() { utils = new BitmapUtils(mContext); utils.configDefaultLoadingImage(R.drawable.news_pic_default); } @Override public int getCount() { return mPhotoList.size(); } @Override public PhotosData.ListBean getItem(int position) { return mPhotoList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = View.inflate(mContext, R.layout.list_photo_item, null); holder = new ViewHolder(); holder.tvTitle = (TextView) convertView .findViewById(R.id.tv_title); holder.ivPic = (ImageView) convertView .findViewById(R.id.iv_pic); holder.tv_price = (TextView) convertView.findViewById(R.id.tv_price); holder.tv_market_price = (TextView) convertView.findViewById(R.id.tv_market_price); holder.tv_purchased = (TextView) convertView.findViewById(R.id.tv_purchased); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } //获取PhotosData.ListBean集合中的每一个元素item PhotosData.ListBean item = getItem(position); holder.tvTitle.setText(item.getItem_name()); holder.tv_price.setText(item.getItem_price()); holder.tv_market_price.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); //添加删除线 holder.tv_market_price.setText(item.getItem_market_price()); holder.tv_purchased.setText(item.getItem_buy_num()); utils.display(holder.ivPic, "http://192.168.1.199/jdmz/"+item.getItem_pic()); return convertView; } } static class ViewHolder { public TextView tvTitle; public ImageView ivPic; public TextView tv_price; public TextView tv_market_price; public TextView tv_purchased; }
把Adapter单独放置的写法,这里BookListAdapter后面有两个参数(上下文对象,数据源),第一种写法是没有参数的,因为adapter就在本类中,根本没有必要传递。
Gson gson = new Gson();Book book = gson.fromJson(result, Book.class);ArrayList<Book> books = book.getBook(); adapter = new BookListAdapter(this,Books); lv.setAdapter(adapter);
adapter类的写法
public class BookListAdapter extends BaseAdapter {private Context c;private ArrayList<Book> list;public BookListAdapter(Context context, ArrayList<Book> books) {this.c = context;this.list = books; }@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size(); }@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn list.get(arg0); }@Overridepublic long getItemId(int arg0) {// TODO Auto-generated method stubreturn arg0; }@Overridepublic View getView(int position, View convertView, ViewGroup parent) {//内部类viewHolderViewHolder holder = null;if (convertView == null) { convertView = View.inflate(c, R.layout.item_list, null); holder = new ViewHolder(); holder.tv = (TextView) convertView.findViewById(R.id.tv); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } Book b = list.get(position); holder.tv.setText(b.getCatlog() + "\n" + b.getId()); //这个是自己在适配器中写入Books类的标题和idreturn convertView; }class ViewHolder { TextView tv; }}
这两种写法都是需要继承Adapter,不同的地方就是第二种在new BookListAdapter的时候在括号中加入了两个参数上下文和数据源list集合,以及把adapter放入单独一个类中。
参考链接:
http://www.json.org/json-zh.html
0 0
- gson 学习
- Gson学习
- GSON 学习
- Gson学习
- Gson学习
- GSON学习
- GSON学习笔记之初识GSON
- google Gson学习笔记
- android gson 学习
- GSON学习(一)
- gson学习笔记
- 学习笔记--Gson
- Gson学习笔记
- Gson学习笔记
- Gson进阶学习
- GSON学习笔记
- GSON解析的学习
- Gson学习(一)
- 设置导航栏的背景颜色
- 2016GDOI总结
- Appium Server 源码分析 (二) - main 方法
- zoj-3735 Josephina and RPG[概率dp]
- Prime Independence(质因子分解+二分图最大独立集)
- Gson学习
- 基于Servlet3.0 comet http长连接
- getopts命令行参数处理
- 两个多项式相乘 使用散列表加速 在计算时合并多项式的项
- Android内核开发:从源码树中删除出厂的app应用
- Bluemix使用与其他云平台对比
- Android最新flash播放器----iFlashPlayer被Adobe放弃的逆袭(softboy)
- Loadrunner开发tuxedo类型的脚本
- 如何上传python