本身上周五,就应该写好了,磨磨唧唧到了这周一才把这个闹完,

今天的内容呢,首页的fragment中加入两个recycyleView
其实挺简单的,就是recycleView的是简单使用(我也不知道任务list为什么没有显示内容,但是debug的时候数据获取到了,先不纠结了)。


源码地址

http://www.kgc.cn/bbs/post/154701.shtml

HomeFragment

public class HomeFragment extends BaseFragment implements View.OnClickListener {private View view;//根布局private RelativeLayout progress, home_fragment_task;private TextView task_more, info_more;private TextView sort_shop, sort_visit, sort_train;private ViewPager vp;private LinearLayout rl_http_failed;private RecyclerView task_lv, info_lv;private InfoListBaseAdapter info_adapter;private TaskListBaseAdapter task_adapter;private MainActivity mainActivity;private List<View> views;//轮播图展示图片viewprivate MViewpager vp_adapter;//viewpager适配器private Timer timer;//计时器private LinearLayout layout;//轮播图下标集合private int count = 0;//轮播图当前下标public final int GetImags = 1014;//获取广告图返回码private final int AnnFaild = 1011;//获取广告图失败返回码private String userid;//用户idprivate Boolean isLoad;//是否登录private List<InfoResultBody> info_list;private List<TaskBody> task_list;private int mShowSize = 3;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {view = inflater.inflate(R.layout.fragment_home, container, false);LogUtils.i(TAG, "首页界面加载..........");initView();//初始化UI组件initdata();//初始化数据return view;}/*** 初始化控件加载*/private void initView() {vp = (ViewPager) view.findViewById(R.id.fragment_img_viewpager);home_fragment_task = (RelativeLayout) view.findViewById(R.id.home_fragment_task);layout = (LinearLayout) view.findViewById(R.id.fragment_point_subscript);rl_http_failed = (LinearLayout) view.findViewById(R.id.rl_http_failed);rl_http_failed.setOnClickListener(this);progress = (RelativeLayout) view.findViewById(R.id.message_fregment_progress);task_more = (TextView) view.findViewById(R.id.fragment_home_task_more);task_more.setOnClickListener(this);info_more = (TextView) view.findViewById(R.id.fragment_home_info_more);info_more.setOnClickListener(this);sort_shop = (TextView) view.findViewById(R.id.fragment_sort_shop);sort_shop.setOnClickListener(this);sort_visit = (TextView) view.findViewById(R.id.fragment_sort_visit);sort_visit.setOnClickListener(this);sort_train = (TextView) view.findViewById(R.id.fragment_sort_train);sort_train.setOnClickListener(this);layout = (LinearLayout) view.findViewById(R.id.fragment_point_subscript);task_lv = (RecyclerView) view.findViewById(R.id.fragment_home_task_list);info_lv = (RecyclerView) view.findViewById(R.id.fragment_home_info_list);task_lv.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));info_lv.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));task_lv.setNestedScrollingEnabled(false);info_lv.setNestedScrollingEnabled(false);}/*** 初始化数据展示*/private void initdata() {if (views == null) {views = new ArrayList<View>();}vp_adapter = new MViewpager();vp.setAdapter(vp_adapter);//添加界面滚动监听vp.addOnPageChangeListener(vp_adapter);//首页轮播图获取OkHttpManager.getInstance().getNet(Constant.Announcement, new OkHttpManager.ResultCallback() {@Overridepublic void onFailed(Request request, IOException e) {getAnnFailure();}@Overridepublic void onSuccess(String response) {getAnnSuccess(response);}});//请求资讯OkHttpManager.getInstance().getNet(Constant.Info + "?pagenum=" + 1 + "&type=" + 0, new OkHttpManager.ResultCallback() {@Overridepublic void onFailed(Request request, IOException e) {getInfoFailed();}@Overridepublic void onSuccess(String response) {getInfoSuccess(response);}});
//        if (isLoad) {home_fragment_task.setVisibility(View.VISIBLE);//登录后请求任务OkHttpManager.getInstance().getNet(Constant.Task + "?pagenum=" + 1, new OkHttpManager.ResultCallback() {@Overridepublic void onFailed(Request request, IOException e) {getTaskFailed();}@Overridepublic void onSuccess(String response) {getTaskSuccess(response);}});
//        }}/*** 从服务端获取任务信息失败* 此时展示数据库缓存数据*/private void getTaskFailed() {progress.setVisibility(View.GONE);rl_http_failed.setVisibility(View.VISIBLE);//展示保存数据task_list = DataSupport.findAll(TaskBody.class);if (task_list != null) {task_adapter = new TaskListBaseAdapter(mContext, task_list, mShowSize);task_lv.setAdapter(task_adapter);}}/*** 从服务端获取任务信息成功*/private void getTaskSuccess(String response) {Log.i("getTaskSuccess",response);progress.setVisibility(View.GONE);Gson gson = new Gson();Task task = gson.fromJson(response, Task.class);//适配资讯列表if (task.getBody() != null) {task_list = task.getBody();task_adapter = new TaskListBaseAdapter(mContext, task_list, mShowSize);task_lv.setAdapter(task_adapter);//从数据库清除数据保存DataSupport.deleteAll(TaskBody.class);//添加新数据到数据库DataSupport.saveAll(task.getBody());}}/*** 从服务端获取资讯信息失败* 此时展示数据库缓存数据*/private void getInfoFailed() {progress.setVisibility(View.GONE);rl_http_failed.setVisibility(View.VISIBLE);//展示保存数据info_list = DataSupport.findAll(InfoResultBody.class);if (info_list != null) {info_adapter = new InfoListBaseAdapter(mContext, info_list, mShowSize);info_lv.setAdapter(info_adapter);}}/*** 从服务端获取资讯信息成功*/private void getInfoSuccess(String response) {progress.setVisibility(View.GONE);Gson gson1 = new Gson();InfoResult info = gson1.fromJson(response, InfoResult.class);//适配资讯列表if (info.getBody() != null) {info_list = info.getBody();info_adapter = new InfoListBaseAdapter(mContext, info_list, mShowSize);info_lv.setAdapter(info_adapter);//从数据库清除数据保存DataSupport.deleteAll(InfoResultBody.class);//添加新数据到数据库DataSupport.saveAll(info.getBody());}}/*** 从服务端获取公告信息失败* 此时展示数据库缓存数据*/private void getAnnFailure() {//从数据库中获取数据List<AnnImgs> imgs_dblist = DataSupport.findAll(AnnImgs.class);if (imgs_dblist != null) {updateAnnShow(imgs_dblist);}}/*** 从服务端获取公告信息成功*/private void getAnnSuccess(String resultImgs) {//服务端返回有效数据则展示,没有不做处理if (resultImgs != null && !"".equals(resultImgs)) {Gson gson = new Gson();AnnImageResult air = gson.fromJson(resultImgs, AnnImageResult.class);List<AnnImgs> imgs_list = air.getBody();if (imgs_list == null) {imgs_list = new ArrayList<AnnImgs>();}updateAnnShow(imgs_list);//更新缓存if (imgs_list.size() > 0) {//从数据库清除数据保存DataSupport.deleteAll(AnnImgs.class);//添加新数据到数据库DataSupport.saveAll(imgs_list);}}}/*** 根据公告图片地址动态更新界面** @param imgs_dblist*/private void updateAnnShow(List<AnnImgs> imgs_dblist) {views.clear();//动态创建轮播展示viewfor (int i = 0; i < imgs_dblist.size(); i++) {ImageView img = new ImageView(mActivity);img.setScaleType(ImageView.ScaleType.CENTER_CROP);//通过网络地址显示图片Picasso.with(mActivity).load(Constant.BaseUrl + imgs_dblist.get(i).getImgUrl()).into(img);views.add(img);}//更新界面显示vp_adapter.notifyDataSetChanged();//添加指示器下标点initPoint();//开启任务计时器if (timer == null) {timer = new Timer();timer.schedule(task, 0, 3000);}}/*** Called when a view has been clicked.** @param v The view that was clicked.*/@Overridepublic void onClick(View v) {}//创建viewpager适配器class MViewpager extends PagerAdapter implements ViewPager.OnPageChangeListener {@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}@Overridepublic int getCount() {return views.size();}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView(views.get(position));}@Overridepublic Object instantiateItem(ViewGroup container, int position) {container.addView(views.get(position));return views.get(position);}/*** viewpager滑动监听,动态更改指示下标的选中状态* @param position*/@Overridepublic void onPageSelected(int position) {for (int i = 0; i < layout.getChildCount(); i++) {ImageView image = (ImageView) layout.getChildAt(i);if (i == position) {image.setSelected(true);} else {image.setSelected(false);}}}@Overridepublic void onPageScrollStateChanged(int arg0) {}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}}Handler mHandler = new Handler() {@Overridepublic void handleMessage(android.os.Message msg) {switch (msg.what) {case Constant.Scroll://接收滚动消息,并执行vp.setCurrentItem(count);break;default:break;}}};/*** 创建图片变化下标图标*/public void initPoint() {//清除所有指示下标layout.removeAllViews();for (int i = 0; i < views.size(); i++) {ImageView img = new ImageView(mActivity);//添加下标圆点参数LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);params.leftMargin = 5;params.rightMargin = 5;img.setLayoutParams(params);img.setImageResource(R.drawable.sns_v2_page_point);if (i == 0) {img.setSelected(true);}layout.addView(img);}}// 创建记时器发送图片轮播消息TimerTask task = new TimerTask() {@Overridepublic void run() {if (count == views.size()) {count = 0;} else {count = count + 1;}mHandler.sendEmptyMessage(Constant.Scroll);}};
}

InfoListBaseAdapter

public class InfoListBaseAdapter extends RecyclerView.Adapter<InfoListBaseAdapter.InfoViewHolder> {private Context mContext;private List<InfoResultBody> list;int number;public InfoListBaseAdapter(Context mContxt, List<InfoResultBody> list, int number) {this.mContext = mContxt;this.list = list;this.number = number;}@Overridepublic InfoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = View.inflate(mContext, R.layout.fragment_home_info_item, null);return new InfoViewHolder(view);}@Overridepublic void onBindViewHolder(InfoViewHolder holder, final int position) {InfoResultBody rd = list.get(position);holder.title.setText(rd.getTitle());holder.context.setText(rd.getSummary());if (!"".equals(rd.getImgurl().trim()) && rd.getImgurl() != null) {Picasso.with(mContext).load(rd.getImgurl()).into(holder.img);}holder.root.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//跳转到资讯详情Toast.makeText(mContext, "资讯详情界面敬请期待" + position, Toast.LENGTH_SHORT).show();}});}@Overridepublic int getItemCount() {if (list.size() > 0) {return number;} else {return 0;}}class InfoViewHolder extends RecyclerView.ViewHolder {ImageView img, arrow;TextView title, context;RelativeLayout root;public InfoViewHolder(View itemView) {super(itemView);arrow = (ImageView) itemView.findViewById(R.id.fragment_home_info_item_arrow);img = (ImageView) itemView.findViewById(R.id.fragment_home_info_item_img);context = (TextView) itemView.findViewById(R.id.fragment_home_info_item_context);title = (TextView) itemView.findViewById(R.id.fragment_home_info_item_title);root = (RelativeLayout) itemView.findViewById(R.id.item_root_home);}}}

TaskListBaseAdapter

public class TaskListBaseAdapter extends RecyclerView.Adapter<TaskListBaseAdapter.TaskViewHolder> {private Context mContxt;private List<TaskBody> list;private int count;public TaskListBaseAdapter(Context mContxt, List<TaskBody> list, int count) {this.mContxt = mContxt;this.list = list;this.count = count;}@Overridepublic TaskViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = View.inflate(mContxt, R.layout.fragment_home_task_item, null);return new TaskViewHolder(view);}@Overridepublic void onBindViewHolder(TaskViewHolder holder, final int position) {TaskBody rd = list.get(position);holder.title.setText(rd.getTitle());Log.i("getTitle",rd.getTitle());if (position == count - 1) {holder.view.setVisibility(View.GONE);}holder.root.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//跳转到任务详情Toast.makeText(mContxt, "任务详情界面敬请期待", Toast.LENGTH_SHORT).show();}});}@Overridepublic int getItemCount() {if (list.size() > 0) {return count;} else {return 0;}}class TaskViewHolder extends RecyclerView.ViewHolder {ImageView arrow;TextView title;RelativeLayout root;View view;public TaskViewHolder(View itemView) {super(itemView);arrow = (ImageView) itemView.findViewById(R.id.fragment_home_task_item_arrow);title = (TextView) itemView.findViewById(R.id.fragment_home_task_item_title);root = (RelativeLayout) itemView.findViewById(R.id.item_root_home);view = itemView.findViewById(R.id.item_home_task);}}}

课程中提到的cardView,在

http://blog.csdn.net/qq_33413264/article/details/75973090

recycleView在后边的文章中会着重写一个博客


还有6节,抓紧看,感觉最近又要忙了

课工场 “微服私访”项目学习(六)相关推荐

  1. 课工场 “微服私访”项目学习(五)

    课程地址 http://www.kgc.cn/android/28013.shtml 主要讲课内容,首页轮播和个人中心的自定义布局 效果图 课程源码 http://www.kgc.cn/bbs/pos ...

  2. 课工场:深化协同育人产教融合,创新基地合作新模式

    2019独角兽企业重金招聘Python工程师标准>>> IFTNews:当前,以人工智能为代表的智能革命浪潮下,我国企业转型及产业升级亟需大量的新科技人才.人才作为第一生产力,高等教 ...

  3. 课工场获批教育部产学合作协同育人项目

    2019独角兽企业重金招聘Python工程师标准>>> 12月12日,教育部高等教育司公布了<有关企业支持的产学合作协同育人项目申报指南(2018年第二批)的函>,课工场 ...

  4. JavaEE学习日志(七十三): 黑马商城项目(六)

    JavaEE学习日志持续更新----> 必看!JavaEE学习路线(文章总汇) JavaEE学习日志(七十三) 黑马商城项目(六) 今天任务 在线支付 准备工作 前端 OrdersDao Ord ...

  5. 课工场与河南质量工程职业学院就“物联网” 校企合作项目展开深入交流

    11月23日,课工场与到访的河南质量工程职业学院代表团就对方共同关心的校企共建合作项目交易进行了友好的会谈,特别是在物联网等新兴技术方向,双方就教育和产业发展进行了深入的交流. 课工场相关负责人介绍, ...

  6. 课工场“不止所见 超乎想象”首期AI尖端人才班答辩会在北京成功举行

    2019独角兽企业重金招聘Python工程师标准>>> 12月13日上午,课工场 "不止所见 超乎想象" 首期 AI尖端人才答辩会在北京成功举办.这场由人工智能领 ...

  7. java 论坛_武汉课工场JAVA培训:“真AI、超智能”人工智能大咖论坛解读

    "真AI.超智能"人工智能大咖论坛解读! 2020年8月3日,高薪工作,匠心课程,创新服务--课工场2020年夏季课程发布系列的第1场"真AI.超智能"人工智能 ...

  8. 什么是rip协议其优缺点_南京课工场IT培训:常见动态路由协议之———RIP动态路由实验...

    动态路由简述: 1.动态路由是与静态路由相对的一个概念,指路由器能够根据路由器之间的交换的特定路由信息自动地建立自己的路由表,并且能够根据链路和节点的变化适时地进行自动调整 2.当网络中节点或节点间的 ...

  9. “中国软件杯”西北大学宣讲开启 课工场人工智能专家深度讲解解题策略

    IFTNews:第八届"中国软件杯"大学生软件设计大赛高校宣讲巡展活动在西北大学正式启动.大赛首场宣讲活动选在西北大学,并邀请到了西北大学信息科学与技术学院副院长冯筠,中国航空航天 ...

最新文章

  1. Functional Programming Contest - September'14
  2. 云计算背后的秘密(6)-NoSQL数据库的综述
  3. 把Zend Studio 5.5改为简体中文版的办法
  4. 下列选项中 采用边界值平滑_数据挖掘期末考题(答案).doc
  5. 用置换破坏您的JUnit5测试
  6. VIM使用系列之一——配置VIM下编程和代码阅读环境
  7. Spring web项目中web.xml常用的配置
  8. ffmpeg 源代码简单分析 : avcodec_decode_video2()
  9. 不胜唏嘘!衰落的苹果与崛起的荣耀
  10. 车辆路径问题的基本操作
  11. 12.计算机网络---iptables防火墙管理工具
  12. 电脑假死卡的动不了_win10电脑突然卡死动不了怎么办 四种方法快速解决电脑卡死...
  13. 玩转Python量化金融工具之NumPy
  14. 直接添加集合对象Arrays.asList()
  15. Keras框架下的loss损失函数
  16. linux修改用户密码命令
  17. Word2019输入(码字)或删除操作出现卡顿问题
  18. 美式期权二叉树matlab代码,美式期权二叉树定价,美式看涨期权二叉树可以提前执行吗...
  19. 黑客零基础入门:手把手带你实现简单的QQ/邮件攻击,注册表/系统安全防护,学不会请给我只因木马
  20. 如何做个优秀的游戏制作人?

热门文章

  1. 安卓控件大小动态文字排版_动态Web排版:爆炸文字
  2. 维修电工电气控制及仪表照明实训装置
  3. unity中使用九宫格输入中文的问题
  4. MPF模块化策略框架
  5. 从买房来看软件有哪几个主要关注点
  6. Nginx运维之二 简单安装和环境搭建
  7. Facebook发帖的图片标准
  8. 【软工】概要设计说明书
  9. linux怎么看sdb1里面的文件,查看linux设备文件系统类型的几种方法
  10. 详述微信域名链接防封短链接是怎么生成的,怎样防止域名被微信拦截