12、json、GridView、缓存
1.解析json数据:
public class PhotosData {public int retcode;public PhotosInfo data;public class PhotosInfo {public String title;public ArrayList<PhotoInfo> news;}public class PhotoInfo {public String id;public String listimage;public String pubdate;public String title;public String type;public String url;}}

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" ><ListViewandroid:id="@+id/lv_photo"android:layout_width="match_parent"android:layout_height="match_parent"android:cacheColorHint="#fff"android:divider="@null" /><GridViewandroid:id="@+id/gv_photo"android:layout_width="match_parent"android:layout_height="match_parent"android:numColumns="2"android:visibility="gone" /></FrameLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="@drawable/pic_list_item_bg"android:gravity="center"android:orientation="vertical" ><ImageViewandroid:id="@+id/iv_pic"android:layout_width="match_parent"android:layout_height="180dp"android:scaleType="centerCrop"android:src="@drawable/news_pic_default" /><TextViewandroid:id="@+id/tv_title"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="10dp"android:text="标题"android:singleLine="true"android:textColor="#000"android:textSize="22sp" /></LinearLayout></LinearLayout>
public static final String PHOTOS_URL = SERVER_URL+ "/photos/photos_1.json";// 获取组图信息的接口
public class PhotoMenuDetailPager extends BaseMenuDetailPager {private ListView lvPhoto;private GridView gvPhoto;private ArrayList<PhotoInfo> mPhotoList;private PhotoAdapter mAdapter;private ImageButton btnPhoto;public PhotoMenuDetailPager(Activity activity, ImageButton btnPhoto) {super(activity);this.btnPhoto = btnPhoto;//这样就把imagebutton传了过来,好方法。在构造函数里传btnPhoto.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {changeDisplay();}});}@Overridepublic View initViews() {View view = View.inflate(mActivity, R.layout.menu_photo_pager, null);lvPhoto = (ListView) view.findViewById(R.id.lv_photo);gvPhoto = (GridView) view.findViewById(R.id.gv_photo);return view;}@Overridepublic void initData() {String cache = CacheUtils.getCache(GlobalContants.PHOTOS_URL, mActivity);if (!TextUtils.isEmpty(cache)) {}getDataFromServer();}private void getDataFromServer() {HttpUtils utils = new HttpUtils();utils.send(HttpMethod.GET, GlobalContants.PHOTOS_URL,new RequestCallBack<String>() {@Overridepublic void onSuccess(ResponseInfo<String> responseInfo) {String result = (String) responseInfo.result;parseData(result);// 设置缓存CacheUtils.setCache(GlobalContants.PHOTOS_URL, result,mActivity);}@Overridepublic void onFailure(HttpException error, String msg) {Toast.makeText(mActivity, msg, Toast.LENGTH_SHORT).show();error.printStackTrace();}});}protected void parseData(String result) {Gson gson = new Gson();PhotosData data = gson.fromJson(result, PhotosData.class);mPhotoList = data.data.news;// 获取组图列表集合if (mPhotoList != null) {mAdapter = new PhotoAdapter();lvPhoto.setAdapter(mAdapter);gvPhoto.setAdapter(mAdapter);}}class PhotoAdapter extends BaseAdapter {private BitmapUtils utils;public PhotoAdapter() {utils = new BitmapUtils(mActivity);utils.configDefaultLoadingImage(R.drawable.news_pic_default);}@Overridepublic int getCount() {return mPhotoList.size();}@Overridepublic PhotoInfo getItem(int position) {return mPhotoList.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder;if (convertView == null) {convertView = View.inflate(mActivity, 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);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}PhotoInfo item = getItem(position);holder.tvTitle.setText(item.title);utils.display(holder.ivPic, item.listimage);return convertView;}}static class ViewHolder {public TextView tvTitle;public ImageView ivPic;}private boolean isListDisplay = true;// 是否是列表展示/*** 切换展现方式*/private void changeDisplay() {if (isListDisplay) {isListDisplay = false;lvPhoto.setVisibility(View.GONE);gvPhoto.setVisibility(View.VISIBLE);btnPhoto.setImageResource(R.drawable.icon_pic_list_type);} else {isListDisplay = true;lvPhoto.setVisibility(View.VISIBLE);gvPhoto.setVisibility(View.GONE);btnPhoto.setImageResource(R.drawable.icon_pic_grid_type);}}}
<ImageButtonandroid:id="@+id/btn_photo"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:layout_marginRight="5dp"android:background="@null"android:src="@drawable/icon_pic_grid_type"android:visibility="gone" />
if (pager instanceof PhotoMenuDetailPager) {btnPhoto.setVisibility(View.VISIBLE);} else {btnPhoto.setVisibility(View.GONE);}
12、json、GridView、缓存的更多相关文章
- 循序渐进学.Net Core Web Api开发系列【12】:缓存
系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇介绍如 ...
- asp.net mvc json数据缓存
一些虚拟主机资源给的少, 如果直接用框架缓存, 估计内存就爆了吧, 如果不用缓存, 虚拟主机自带的数据库也是限制资源的, 访问多了就直接给timeout了, 用json文件形式缓存查询出来的数据, 虽 ...
- ajax访问json文件缓存问题
ajax访问json文件,json文件改动,访问的时候也不能及时看到改动后的内容. 这是因为浏览器缓存的原因. 在这时候就需要清除浏览器的缓存或者加上一个标记,让ajax访问文件的时候知道这是一个新的 ...
- 从微信小程序到鸿蒙js开发【12】——storage缓存&自动登录
鸿蒙入门指南,小白速来!从萌新到高手,怎样快速掌握鸿蒙开发?[课程入口] 正文: 在应用开发时,我们常需要将一些数据缓存到本地,以提升用户体验.比如在一个电商的app中,如果希望用户登录成功后,下次打 ...
- 2015.05.12:json的常用处理方式
1:json的介绍:json常用于前台与后台的数据传输 传递时需将json对象转换为json字符 JSON.stringify(); 2:json格式的查看应用:JsonView 3:后台获取到js ...
- 12.19 redis缓存
---恢复内容开始--- 命中:应用程序从key中获取数据,取到后返回 失效:到设置的失效时间后就失效 更新:应用程序把数据存到数据库中后又放回去 在项目中使用redis方法 结合业务场景,避免滥用 ...
- 12、pytest -- 缓存:记录执行的状态
目录 1. cacheprovider插件 1.1. --lf, --last-failed:只执行上一轮失败的用例 1.2. --ff, --failed-first:先执行上一轮失败的用例,再执行 ...
- Pytest(12)pytest缓存
前言 pytest 运行完用例之后会生成一个 .pytest_cache 的缓存文件夹,用于记录用例的ids和上一次失败的用例. 方便我们在运行用例的时候加上--lf 和 --ff 参数,快速运行上一 ...
- GridView控件
GridView是ASP.NET 1.x的DataGrid控件的后继者.它提供了同样的基本功能集,同一时候添加�了大量扩展和改进.如前所述,DataGrid(ASP.NET 2.0仍然全然支持)是一个 ...
- asp.net实现SQL2005的通知数据缓存
首先第一步是确保您的 Service Broker 已经激活,激活 Service Broker (Transact-SQL)如下: USE master ; GO ALTER DATABASE Yo ...
随机推荐
- JavaSE基础知识(5)—面向对象(5.4面向对象三大特征:封装、继承、多态)
面向对象编程具有三大特征: 封装 继承 多态 一.封装 1.好处 狭义的封装:也就是属性的封装,避免了任意赋值的危险,提高了数据的安全性! ①隐藏一个类中不需要对外提供的实现细节 ②使用者只能通过实现 ...
- Kubernetes节点维护
1.设置节点为不可调度 kubectl cordon $NODENAME 2.使用kubectl drain优雅的结束节点上的所有 pod 并同时标记节点为不可调度 kubectl drain $NO ...
- 通过PHP调用微信JSSDK实例
JSSDK使用步骤: 1. 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”. 2. 采用http GET方式请求获得access_token(有效期7200秒). 3. ...
- maven学习--1.安装与配置
转自 http://www.cnblogs.com/xdp-gacl/p/3498271.html 1.下载地址:http://maven.apache.org/download.cgi 2.解压缩包 ...
- linux 图形化界面 && 谷歌浏览器 安装
一.图形化界面安装 yum groupinstall "Desktop" 如果运行显示 则 yum groupinstall "X Window System" ...
- Chapter5_初始化与清理_数组初始化与可变参数列表
一.数组初始化 数组是相同类型的,用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.编译器是不允许指定数组的长度的,当使用语句int[] a时,拥有的只是一个符号名,即一个数组的引用,并不拥 ...
- 检索html页自生成&nasp;标签,并替换为空(即去掉空格)
在开发过程中,遇到这样的一种情况,就是页面有时候不知道什么原因会自动生成一些元素,从而打乱自己原有的一些布局. 原html页源代码: 生成后的html源代码: 可以明显看出自动生成了很多 元素,现 ...
- H5canvas画类似心电图
HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像,我们可以使用canvas来绘制类似心电图的东西. 效果图如下: <!DOCTYPE html> <ht ...
- 用angular制作简单的选项卡
现在angular变得挺火热的,自己也去简单的学习了一下,学了几天下来觉得angular果然好用,但是现在只是停留在比较浅的层面上,要想学好angular还是得下一番功夫的.学了一点新知识就想和大家分 ...
- spring实现一个简单的事务管理
前两天给公司的数据库操作加了事务管理,今天博客就更一下这个吧. 先说明:本文只是简单得实现一下事务,事务的具体内容,比如事务的等级,事务的具体实现原理等等... 菜鸟水平有限,暂时还更不了这个,以后的 ...