HomeProtocol

  1. public class HomeProtocol extends BaseProtocol<List<AppInfo>>{
  2. // 1 把整个json文件写到一个本地文件中 **
  3. // 2 把每条数据都摘出来存到数据库中
  4. // 见到大括号 就用JsonObject ,见到中括号就是JsonArray
  5. public List<AppInfo> paserJson(String json) {
  6. List<AppInfo> appInfos=new ArrayList<AppInfo>();
  7. try {
  8. JSONObject jsonObject=new JSONObject(json);
  9. JSONArray jsonArray = jsonObject.getJSONArray("list");
  10. for(int i=0;i<jsonArray.length();i++){
  11. JSONObject jsonObj = jsonArray.getJSONObject(i);
  12. long id=jsonObj.getLong("id");
  13. String name = jsonObj.getString("name");
  14. String packageName=jsonObj.getString("packageName");
  15. String iconUrl = jsonObj.getString("iconUrl");
  16. float stars=Float.parseFloat(jsonObj.getString("stars"));
  17. long size=jsonObj.getLong("size");
  18. String downloadUrl = jsonObj.getString("downloadUrl");
  19. String des = jsonObj.getString("des");
  20. AppInfo info=new AppInfo(id, name, packageName, iconUrl, stars, size, downloadUrl, des);
  21. appInfos.add(info);
  22. }
  23. return appInfos;
  24. } catch (JSONException e) {
  25. e.printStackTrace();
  26. return null;
  27. }
  28. }
  29. @Override
  30. public String getKey() {
  31. return "home";
  32. }
  33. }

BaseListView (自定义listview)
 
  1. public class BaseListView extends ListView {
  2. public BaseListView(Context context) {
  3. super(context);
  4. init();
  5. }
  6. public BaseListView(Context context, AttributeSet attrs, int defStyle) {
  7. super(context, attrs, defStyle);
  8. init();
  9. }
  10. public BaseListView(Context context, AttributeSet attrs) {
  11. super(context, attrs);
  12. init();
  13. }
  14. private void init() {
  15. // setSelector 点击显示的颜色
  16. // setCacheColorHint 拖拽的颜色
  17. // setDivider 每个条目的间隔 的分割线
  18. this.setSelector(R.drawable.nothing); // 什么都没有
  19. this.setCacheColorHint(R.drawable.nothing);
  20. this.setDivider(UiUtils.getDrawalbe(R.drawable.nothing));
  21. }
  22. }

HomeFragment 
  1. public class HomeFragment extends BaseFragment {
  2. private List<AppInfo> datas;
  3. // 当Fragment挂载的activity创建的时候调用
  4. @Override
  5. public void onActivityCreated(Bundle savedInstanceState) {
  6. super.onActivityCreated(savedInstanceState);
  7. show();
  8. }
  9. public View createSuccessView() {
  10. BaseListView listView=new BaseListView(UiUtils.getContext());
  11. listView.setAdapter(new HomeAdapter());
  12. // 第二个参数 慢慢滑动的时候是否加载图片 false 加载 true 不加载
  13. // 第三个参数 飞速滑动的时候是否加载图片 true 不加载
  14. listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true));
  15. bitmapUtils.configDefaultLoadingImage(R.drawable.ic_default); // 设置如果图片加载中显示的图片
  16. bitmapUtils.configDefaultLoadFailedImage(R.drawable.ic_default);// 加载失败显示的图片
  17. return listView;
  18. }
  19. private class HomeAdapter extends BaseAdapter{
  20. @Override
  21. public int getCount() {
  22. return datas.size();
  23. }
  24. @Override
  25. public View getView(int position, View convertView, ViewGroup parent) {
  26. View view;
  27. ViewHolder holder;
  28. if(convertView==null){
  29. view=View.inflate(UiUtils.getContext(), R.layout.item_app, null);
  30. holder=new ViewHolder();
  31. holder.item_icon=(ImageView) view.findViewById(R.id.item_icon);
  32. holder.item_title=(TextView) view.findViewById(R.id.item_title);
  33. holder.item_size=(TextView) view.findViewById(R.id.item_size);
  34. holder.item_bottom=(TextView) view.findViewById(R.id.item_bottom);
  35. holder.item_rating=(RatingBar) view.findViewById(R.id.item_rating);
  36. view.setTag(holder);
  37. }else{
  38. view=convertView;
  39. holder=(ViewHolder) view.getTag();
  40. }
  41. AppInfo appInfo=datas.get(position);
  42. holder.item_title.setText(appInfo.getName());// 设置应用程序的名字
  43. String size=Formatter.formatFileSize(UiUtils.getContext(), appInfo.getSize());
  44. holder.item_size.setText(size);
  45. holder.item_bottom.setText(appInfo.getDes());
  46. float stars = appInfo.getStars();
  47. holder.item_rating.setRating(stars); // 设置ratingBar的值
  48. String iconUrl = appInfo.getIconUrl(); //http://127.0.0.1:8090/image?name=app/com.youyuan.yyhl/icon.jpg
  49. // 显示图片的控件
  50. bitmapUtils.display(holder.item_icon, HttpHelper.URL+"image?name="+iconUrl);
  51. return view;
  52. }
  53. @Override
  54. public Object getItem(int position) {
  55. return datas.get(position);
  56. }
  57. @Override
  58. public long getItemId(int position) {
  59. return position;
  60. }
  61. }
  62. static class ViewHolder{
  63. ImageView item_icon;
  64. TextView item_title,item_size,item_bottom;
  65. RatingBar item_rating;
  66. }
  67. //检测数据
  68. public LoadResult load() {
  69. HomeProtocol protocol=new HomeProtocol();
  70. datas = protocol.load(0);
  71. return checkData(datas);
  72. }
  73. }

7.首页、bitmaputils的更多相关文章

  1. SQLSERVER走起微信公众帐号全新改版 全新首页

    SQLSERVER走起微信公众帐号全新改版 全新首页 今天,SQLSERVER走起微信公众帐号增加了首页功能 虽然还是订阅号,不过已经对版面做了比较大的修改,希望各位亲用得放心.用得安心O(∩_∩)O ...

  2. 带你实现开发者头条APP(四)---首页优化(加入design包)

    title: 带你实现开发者头条APP(四)---首页优化(加入design包) tags: design,Toolbar,TabLayout,RecyclerView grammar_cjkRuby ...

  3. 带你实现开发者头条APP(三) 首页实现

    title: 带你实现开发者头条APP(三) 首页实现 tags: 轮播广告,ViewPager切换,圆形图片 grammar_cjkRuby: true --- 一.前言 今天实现开发者头条APP的 ...

  4. 修复IE11首页被恶意篡改的问题

    前几天为了测试一个程序,把系统换成了Windows10,Windows10自带了微软的新浏览器Edge和IE11,用来其实也没什么太多感觉了,我习惯于Chrome,但有些东西还是得用IE,比如网银之类 ...

  5. 每日设置Bing首页图片为壁纸

    闲来无事,手痒痒要做一个什么小工具. 于是乎便有了本文. 当有一个想法的时候,首先免不了网上搜索一番以便看一下有木有网友有过类似的想法. 很显然--有! 因此本文大代码是从几个地方搜索,然后组合的. ...

  6. GooglePlay 首页效果----tab的揭示效果(Reveal Effect) (1)

    GooglePlay 首页效果----tab的揭示效果(Reveal Effect) (1) 前言: 无意打开GooglePlay app来着,然后发现首页用了揭示效果,连起来用着感觉还不错. 不清楚 ...

  7. Android RecyclerView 实现支付宝首页效果

    Android RecyclerView 实现支付宝首页效果 [TOC] 虽然我本人不喜欢支付宝的,但是这个网格本身其实还是不错的,项目更新中更改了一个布局为网格模式,类似支付宝.(估计是产品抄袭的= ...

  8. 从零开始编写自己的C#框架(17)——Web层后端首页

    后端首页是管理员登陆后进入的第一个页面,主要是显示当前登陆用户信息.在线人数.菜单树列表.相关功能按键和系统介绍.让管理员能更方便的找到息想要的内容. 根据不同系统的需要,首页会显示不同的内容,比如显 ...

  9. 模仿东京首页banner轮播,京东新闻上下滚动动画实现(动画实现)

    接着上篇 微信小程序-阅读小程序demo写:http://www.cnblogs.com/muyixiaoguang/p/5917986.html 首页banner动画实现 京东新闻上下动画实现 想着 ...

随机推荐

  1. JavaSE基础知识(5)—面向对象(方法的重写与重载)

    一.重写 1.说明 子类对继承过来的父类的方法进行改造,这种现象称为方法的重写或覆盖或覆写(Override) 2.要求 方法签名完全一致,jdk5.0之后,允许返回类型可以是子类类型,权限修饰符可以 ...

  2. windows -休眠

    查询服务器执行的睡眠状态 powercfg -a 开始休眠方法:手工键入如下命令: powercfg -hibernate on 命令执行之后立即就可以生效,无需要重新启动系统,再次执行“powerc ...

  3. PHPEXCEL读出数据是PHPExcel_RichText类型

    今天在做导入EXCEL数据时,而且单元格里的数据类型改成文本类型后,在PHPEXCEL读出来的是PHPExcel_RichText类型的,这类型使getValue()是不管用了,因为这时候getVal ...

  4. KNN Python实现

    KNN Python实现 ''' k近邻(kNN)算法的工作机制比较简单,根据某种距离测度找出距离给定待测样本距离最小的k个训练样本,根据k个训练样本进行预测. 分类问题:k个点中出现频率最高的类别作 ...

  5. 从mysql主从复制到微信开源的phxsql

    严格的来说,微信开源的phxsql不是数据库,而是一个数据库的插件: 传统的互联网数据库结构一般是这样的: 服务访问数据库是通过分片来的: 除了这种基于hash的分片,还有一种基于range的分片方式 ...

  6. Numpy and Matplotlib

    Numpy介绍 编辑 一个用python实现的科学计算,包括:1.一个强大的N维数组对象Array:2.比较成熟的(广播)函数库:3.用于整合C/C++和Fortran代码的工具包:4.实用的线性代数 ...

  7. 文件操作命令(replace)

    Replace 命令: // 描述: 替换文件. // 语法: REPLACE [drive1:][path1]filename [drive2:][path2] [/A] [/P] [/R] [/W ...

  8. JSP·随笔

    1.简介 > HTML          - HTML擅长显示一个静态的网页,但是不能调用Java程序.       > Servlet   - Servlet擅长调用Java程序和后台进 ...

  9. Linq语言,由红色部分可直接代替绿色(List,dictionary)

    /// <summary> /// 获取最近5分钟缓存的车量 /// </summary> /// <param name="carNo">&l ...

  10. 关于python的展望

    在未接触这门课程以前,我完全对编程一类的操作毫无兴趣.但在短短的两星期时间里,我改变了想法,原因有二.其一是老师幽默,其二是课程实用性高.我希望课程以后可以继续沿用现在由浅入深,给予足够提示的方式,引 ...