前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >12、json、GridView、缓存

12、json、GridView、缓存

作者头像
六月的雨
发布2018-05-14 10:56:56
7600
发布2018-05-14 10:56:56
举报
文章被收录于专栏:Android开发指南

1.解析json数据:

代码语言:javascript
复制
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;	}}

2.布局:

代码语言:javascript
复制
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <ListView        android:id="@+id/lv_photo"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:cacheColorHint="#fff"        android:divider="@null" />    <GridView        android:id="@+id/gv_photo"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:numColumns="2"        android:visibility="gone" /></FrameLayout>

使用同一个子布局,同一个adapter

代码语言:javascript
复制
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="vertical" >    <LinearLayout        android: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" >        <ImageView            android:id="@+id/iv_pic"            android:layout_width="match_parent"            android:layout_height="180dp"            android:scaleType="centerCrop"            android:src="@drawable/news_pic_default" />        <TextView            android: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>

3.菜单详情页—组图

代码语言:javascript
复制
	public static final String PHOTOS_URL = SERVER_URL			+ "/photos/photos_1.json";// 获取组图信息的接口
代码语言:javascript
复制
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() {			@Override			public void onClick(View v) {				changeDisplay();			}		});	}	@Override	public 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;	}	@Override	public 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>() {					@Override					public void onSuccess(ResponseInfo<String> responseInfo) {						String result = (String) responseInfo.result;						parseData(result);						// 设置缓存						CacheUtils.setCache(GlobalContants.PHOTOS_URL, result,								mActivity);					}					@Override					public 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);		}		@Override		public int getCount() {			return mPhotoList.size();		}		@Override		public PhotoInfo 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(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);		}	}}

4.其他

在basepager里添加这样一个按钮,并findviewbyid出来,因为菜单是新闻中心里才有的,组图是菜单里的一项

代码语言:javascript
复制
    <ImageButton            android: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" />

新闻中心页面setCurrentMenuDetailPager中

代码语言:javascript
复制
	if (pager instanceof PhotoMenuDetailPager) {			btnPhoto.setVisibility(View.VISIBLE);		} else {			btnPhoto.setVisibility(View.GONE);		}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-10-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档