9.indicate、xutils、json
public class TabData {public int retcode;public TabDetail data;//不是数组的话类型就是这个public class TabDetail {public String title;public String more;public ArrayList<TabNewsData> news;public ArrayList<TopNewsData> topnews;@Overridepublic String toString() {return "TabDetail [title=" + title + ", news=" + news+ ", topnews=" + topnews + "]";}}/*** 新闻列表对象*/public class TabNewsData {public String id;public String listimage;public String pubdate;public String title;public String type;public String url;@Overridepublic String toString() {return "TabNewsData [title=" + title + "]";}}/*** 头条新闻*/public class TopNewsData {public String id;public String topimage;public String pubdate;public String title;public String type;public String url;@Overridepublic String toString() {return "TopNewsData [title=" + title + "]";}}@Overridepublic String toString() {return "TabData [data=" + data + "]";}}
- 使用xutils加载网络图片,xutils的configDefaultLoadingImage()方法,设置默认图片 ,还有
BitmapFun 、ImageDownloader也能加载网络图片 - xutils的注解,不需要fandviewbyid了,但是前提是需要注入事件ViewUtils.inject(this, view);
- 可以给listview加个头,那样头也跟着滑动了,头上还能加头,lvList.addHeaderView(headerView);
- indicate的使用
1.list_header_topnews.xml:头条新闻
由于indicate自带的下面的几个点很难看,可以根据自己的需求修改
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"//注意命名空间也需要拷过来android:layout_width="match_parent"android:layout_height="wrap_content" ><com.itheima.zhbj52.view.TopNewsViewPagerandroid:id="@+id/vp_news"android:layout_width="match_parent"android:layout_height="200dp" /><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:background="#a000"android:padding="3dp" ><TextViewandroid:id="@+id/tv_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#fff"android:textSize="16sp" /><com.viewpagerindicator.CirclePageIndicator//下面的几个点android:id="@+id/indicator"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:padding="10dip"app:fillColor="#f00"//点选中的颜色app:pageColor="@android:color/darker_gray"//点默认的颜色app:radius="3dp"//大小app:strokeWidth="0dp" />//点外面的黑圆圈</RelativeLayout></RelativeLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="10dp"><ImageViewandroid:id="@+id/iv_pic"android:layout_width="110dp"android:layout_height="70dp"android:scaleType="fitXY"android:padding="1dp"android:background="@android:color/darker_gray"//padding了一个dp,背景是灰色的,图片外就显示出了一个边框android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:src="@drawable/image_demo" /><TextViewandroid:id="@+id/tv_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_marginLeft="20dp"android:layout_toRightOf="@+id/iv_pic"android:text="新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题"android:textColor="#000"android:maxLines="2"android:ellipsize="end"android:textSize="20sp" /><TextViewandroid:id="@+id/tv_date"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@id/tv_title"android:text="2015-03-16 16:20"android:layout_alignBottom="@id/iv_pic"android:textColor="@android:color/darker_gray"android:textSize="16sp" /></RelativeLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><com.itheima.zhbj52.view.RefreshListViewandroid:id="@+id/lv_list"android:layout_width="match_parent"android:layout_height="0dp"android:cacheColorHint="#fff"android:layout_weight="1" ></com.itheima.zhbj52.view.RefreshListView></LinearLayout>
public class TabDetailPager extends BaseMenuDetailPager implementsOnPageChangeListener {
NewsTabData mTabData;// 新闻页签数据// private TextView tvText;private String mUrl;// 访问页签的网络地址private TabData mTabDetailData;// 页签详情页数据@ViewInject(R.id.vp_news)private ViewPager mViewPager;// 头条新闻的pager@ViewInject(R.id.tv_title)private TextView tvTitle;// 头条新闻的标题private ArrayList<TopNewsData> mTopNewsList;// 头条新闻数据集合@ViewInject(R.id.indicator)private CirclePageIndicator mIndicator;// 头条新闻位置指示器@ViewInject(R.id.lv_list)private RefreshListView lvList;// 新闻列表private ArrayList<TabNewsData> mNewsList; // 新闻数据集合private NewsAdapter mNewsAdapter;// 给list设置的adapterpublic TabDetailPager(Activity activity, NewsTabData newsTabData) {super(activity);mTabData = newsTabData;//new的时候把数据和连接地址也创建了mUrl = GlobalContants.SERVER_URL + mTabData.url;}@Overridepublic View initViews() {View view = View.inflate(mActivity, R.layout.tab_detail_pager, null);//下拉刷新// 加载头布局View headerView = View.inflate(mActivity, R.layout.list_header_topnews,null);ViewUtils.inject(this, view);ViewUtils.inject(this, headerView);// 将头条新闻以头布局的形式加给listviewlvList.addHeaderView(headerView);return view;}@Overridepublic void initData() {getDataFromServer();}private void getDataFromServer() {HttpUtils utils = new HttpUtils();utils.send(HttpMethod.GET, mUrl, new RequestCallBack<String>() {@Overridepublic void onSuccess(ResponseInfo<String> responseInfo) {String result = (String) responseInfo.result;System.out.println("页签详情页返回结果:" + result);parseData(result);}@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();mTabDetailData = gson.fromJson(result, TabData.class);System.out.println("页签详情解析:" + mTabDetailData);mTopNewsList = mTabDetailData.data.topnews;mNewsList = mTabDetailData.data.news;if (mTopNewsList != null) {mViewPager.setAdapter(new TopNewsAdapter());mIndicator.setViewPager(mViewPager);mIndicator.setSnap(true);// 支持快照显示,即不是慢慢的滑过去,而是跳过去mIndicator.setOnPageChangeListener(this);mIndicator.onPageSelected(0);// 让指示器重新定位到第一个点tvTitle.setText(mTopNewsList.get(0).title);//首先让他显示个字}if (mNewsList != null) {mNewsAdapter = new NewsAdapter();lvList.setAdapter(mNewsAdapter);}}/*** 头条新闻适配器** @author Kevin**/class TopNewsAdapter extends PagerAdapter {private BitmapUtils utils;public TopNewsAdapter() {utils = new BitmapUtils(mActivity);utils.configDefaultLoadingImage(R.drawable.topnews_item_default);// 设置默认图片}@Overridepublic int getCount() {return mTabDetailData.data.topnews.size();}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {ImageView image = new ImageView(mActivity);image.setScaleType(ScaleType.FIT_XY);// 基于控件大小填充图片TopNewsData topNewsData = mTopNewsList.get(position);utils.display(image, topNewsData.topimage);// 传递imagView对象和图片地址container.addView(image);System.out.println("instantiateItem....." + position);return image;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}}/*** 新闻列表的适配器** @author Kevin**/class NewsAdapter extends BaseAdapter {private BitmapUtils utils;public NewsAdapter() {utils = new BitmapUtils(mActivity);utils.configDefaultLoadingImage(R.drawable.pic_item_list_default);}@Overridepublic int getCount() {return mNewsList.size();}@Overridepublic TabNewsData getItem(int position) {return mNewsList.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_news_item,null);holder = new ViewHolder();holder.ivPic = (ImageView) convertView.findViewById(R.id.iv_pic);holder.tvTitle = (TextView) convertView.findViewById(R.id.tv_title);holder.tvDate = (TextView) convertView.findViewById(R.id.tv_date);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}TabNewsData item = getItem(position);holder.tvTitle.setText(item.title);holder.tvDate.setText(item.pubdate);utils.display(holder.ivPic, item.listimage);return convertView;}}static class ViewHolder {public TextView tvTitle;public TextView tvDate;public ImageView ivPic;}@Overridepublic void onPageScrollStateChanged(int arg0) {}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageSelected(int arg0) {TopNewsData topNewsData = mTopNewsList.get(arg0);tvTitle.setText(topNewsData.title);}}
9.indicate、xutils、json的更多相关文章
- 安卓开发常用网络请求框架OkHttp、Volley、XUtils、Retrofit对比
网络请求框架总结1.xutils 此框架庞大而周全,这个框架可以网络请求,同时可以图片加载,又可以数据存储,又可以 View 注解,使用这种框架很方便,这样会使得你整个项目对它依赖性太强,万一 ...
- 使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)
在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...
- python常用模块json、os、sys
一.序列化 json & pickle 模块 json--用于字符串和Python数据类型间进行转换 pickle---用于python特有的类型和Python的数据类型间进行转换 json: ...
- json、javaBean、xml互转的几种工具介绍
json.javaBean.xml互转的几种工具介绍 转载至:http://blog.csdn.net/sdyy321/article/details/7024236 工作中经常要用到Json.Jav ...
- C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。
C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...
- [Network] HTML、XML和JSON学习汇总
写在前面:楼主也是刚刚接触这方面的知识,之前完全是零基础,后来经朋友推荐了几个不错的博文,看完以后豁然开朗.但是此博文更加偏重于基础知识介绍(其实更深的楼主也还不了解,这方面的大神请绕道),只是分享个 ...
- PHP如何自动识别第三方Restful API的内容,自动渲染成 json、xml、html、serialize、csv、php等数据
如题,PHP如何自动识别第三方Restful API的内容,自动渲染成 json.xml.html.serialize.csv.php等数据? 其实这也不难,因为Rest API也是基于http协议的 ...
- C#、js、json Datetime格式总结
在工作过程中遇到时间格式的数据在C#.js 和 json保存的不同结果,现在总结一下 JavaScript Parser: 1.数字型时间转字符串时间 如var data = "/Date( ...
- Android 中的Json解析工具fastjson 、序列化、反序列化
Android中通常需要访问服务器,然而服务器返回的数据很多时候都是Json格式 1.fastjson简介 阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备 ...
随机推荐
- 剑指offer例题——反转链表
题目描述 输入一个链表,反转链表,输出新链表的表头 程序编写 将链表反转 public class Solution { public ListNode ReverseList(ListNode he ...
- tcp的发送端一个小包就能打破对端的delay_ack么?
3.10内核,反向合入4.9的bbr. 最近分析bbr的时候,收集了线上的一些报文,其中有一个疑问一直在我脑海里面,如下: 本身处于delay_ack状态的客户端,大概40ms回复一个delay_ac ...
- 在网站中使用UEditor富文本编辑器
UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量.可定制.用户体验优秀等特点. 官网链接 进入到下载页面,选择相应的版本下载 这里我们使用ASP.NET开发,所以选择 ...
- Spring使用fastjson处理json数据
1.搭建SpringMVC+spring环境 2.配置web.xml以及springmvc-config.xml,web.xml同Spring使用jackson处理json数据一样,Springmvc ...
- Quartz使用
背景 很多时候,项目需要在不同时刻,执行一个或很多个不同的作业. Windows执行计划这时并不能很好的满足需求了,迫切需要一个更为强大,方便管理,集群部署的作业调度框架. 介绍 Quartz一个开源 ...
- uvm_pre_do
https://blog.csdn.net/tingtang13/article/details/46535649 1.uvm_do 封装了一系列接口,封装越多,灵活性越差.所以增加了三个接口:pre ...
- Linux基本的操作
一.为什么我们要学习Linux 相信大部分人的PC端都是用Windows系统的,那我们为什么要学习Linux这个操作系统呢???Windows图形化界面做得这么好,日常基本使用的话,学习成本几乎为零. ...
- FortiGate 路由
1.静态路由 防火墙外网口wan1 ip地址为202.1.1.2,对端ISP路由器G1/0口地址为202.1.1.1. 菜单: 路由--静态--静态路由,点击 "创建新的",按如下 ...
- c#关于Mysql MySqlBulkLoader 批量上传
有个list表有几万数据 用insert插入,速度跟蜗牛爬行, 几十个表,传起来可就需要时间了. 搜搜,发现有 MySqlBulkLoader 这个人家mysql 的dll 里边已经提供了这个方法 ...
- journalctl 清理journal日志
在CentOS 7开始使用的systemd使用了journal日志,这个日志的管理方式和以往使用syslog的方式不同,可以通过管理工具维护. 使用df -h检查磁盘文件,可以看到/run目录下有日志 ...

