7.首页、bitmaputils
HomeProtocol
public class HomeProtocol extends BaseProtocol<List<AppInfo>>{
// 1 把整个json文件写到一个本地文件中 **
// 2 把每条数据都摘出来存到数据库中
// 见到大括号 就用JsonObject ,见到中括号就是JsonArray
public List<AppInfo> paserJson(String json) {
List<AppInfo> appInfos=new ArrayList<AppInfo>();
try {
JSONObject jsonObject=new JSONObject(json);
JSONArray jsonArray = jsonObject.getJSONArray("list");
for(int i=0;i<jsonArray.length();i++){
JSONObject jsonObj = jsonArray.getJSONObject(i);
long id=jsonObj.getLong("id");
String name = jsonObj.getString("name");
String packageName=jsonObj.getString("packageName");
String iconUrl = jsonObj.getString("iconUrl");
float stars=Float.parseFloat(jsonObj.getString("stars"));
long size=jsonObj.getLong("size");
String downloadUrl = jsonObj.getString("downloadUrl");
String des = jsonObj.getString("des");
AppInfo info=new AppInfo(id, name, packageName, iconUrl, stars, size, downloadUrl, des);
appInfos.add(info);
}
return appInfos;
} catch (JSONException e) {
e.printStackTrace();
return null;
}
}
@Override
public String getKey() {
return "home";
}
}
public class BaseListView extends ListView {
public BaseListView(Context context) {
super(context);
init();
}
public BaseListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public BaseListView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
// setSelector 点击显示的颜色
// setCacheColorHint 拖拽的颜色
// setDivider 每个条目的间隔 的分割线
this.setSelector(R.drawable.nothing); // 什么都没有
this.setCacheColorHint(R.drawable.nothing);
this.setDivider(UiUtils.getDrawalbe(R.drawable.nothing));
}
}
public class HomeFragment extends BaseFragment {
private List<AppInfo> datas;
// 当Fragment挂载的activity创建的时候调用
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
show();
}
public View createSuccessView() {
BaseListView listView=new BaseListView(UiUtils.getContext());
listView.setAdapter(new HomeAdapter());
// 第二个参数 慢慢滑动的时候是否加载图片 false 加载 true 不加载
// 第三个参数 飞速滑动的时候是否加载图片 true 不加载
listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true));
bitmapUtils.configDefaultLoadingImage(R.drawable.ic_default); // 设置如果图片加载中显示的图片
bitmapUtils.configDefaultLoadFailedImage(R.drawable.ic_default);// 加载失败显示的图片
return listView;
}
private class HomeAdapter extends BaseAdapter{
@Override
public int getCount() {
return datas.size();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
ViewHolder holder;
if(convertView==null){
view=View.inflate(UiUtils.getContext(), R.layout.item_app, null);
holder=new ViewHolder();
holder.item_icon=(ImageView) view.findViewById(R.id.item_icon);
holder.item_title=(TextView) view.findViewById(R.id.item_title);
holder.item_size=(TextView) view.findViewById(R.id.item_size);
holder.item_bottom=(TextView) view.findViewById(R.id.item_bottom);
holder.item_rating=(RatingBar) view.findViewById(R.id.item_rating);
view.setTag(holder);
}else{
view=convertView;
holder=(ViewHolder) view.getTag();
}
AppInfo appInfo=datas.get(position);
holder.item_title.setText(appInfo.getName());// 设置应用程序的名字
String size=Formatter.formatFileSize(UiUtils.getContext(), appInfo.getSize());
holder.item_size.setText(size);
holder.item_bottom.setText(appInfo.getDes());
float stars = appInfo.getStars();
holder.item_rating.setRating(stars); // 设置ratingBar的值
String iconUrl = appInfo.getIconUrl(); //http://127.0.0.1:8090/image?name=app/com.youyuan.yyhl/icon.jpg
// 显示图片的控件
bitmapUtils.display(holder.item_icon, HttpHelper.URL+"image?name="+iconUrl);
return view;
}
@Override
public Object getItem(int position) {
return datas.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
}
static class ViewHolder{
ImageView item_icon;
TextView item_title,item_size,item_bottom;
RatingBar item_rating;
}
//检测数据
public LoadResult load() {
HomeProtocol protocol=new HomeProtocol();
datas = protocol.load(0);
return checkData(datas);
}
}
7.首页、bitmaputils的更多相关文章
- SQLSERVER走起微信公众帐号全新改版 全新首页
SQLSERVER走起微信公众帐号全新改版 全新首页 今天,SQLSERVER走起微信公众帐号增加了首页功能 虽然还是订阅号,不过已经对版面做了比较大的修改,希望各位亲用得放心.用得安心O(∩_∩)O ...
- 带你实现开发者头条APP(四)---首页优化(加入design包)
title: 带你实现开发者头条APP(四)---首页优化(加入design包) tags: design,Toolbar,TabLayout,RecyclerView grammar_cjkRuby ...
- 带你实现开发者头条APP(三) 首页实现
title: 带你实现开发者头条APP(三) 首页实现 tags: 轮播广告,ViewPager切换,圆形图片 grammar_cjkRuby: true --- 一.前言 今天实现开发者头条APP的 ...
- 修复IE11首页被恶意篡改的问题
前几天为了测试一个程序,把系统换成了Windows10,Windows10自带了微软的新浏览器Edge和IE11,用来其实也没什么太多感觉了,我习惯于Chrome,但有些东西还是得用IE,比如网银之类 ...
- 每日设置Bing首页图片为壁纸
闲来无事,手痒痒要做一个什么小工具. 于是乎便有了本文. 当有一个想法的时候,首先免不了网上搜索一番以便看一下有木有网友有过类似的想法. 很显然--有! 因此本文大代码是从几个地方搜索,然后组合的. ...
- GooglePlay 首页效果----tab的揭示效果(Reveal Effect) (1)
GooglePlay 首页效果----tab的揭示效果(Reveal Effect) (1) 前言: 无意打开GooglePlay app来着,然后发现首页用了揭示效果,连起来用着感觉还不错. 不清楚 ...
- Android RecyclerView 实现支付宝首页效果
Android RecyclerView 实现支付宝首页效果 [TOC] 虽然我本人不喜欢支付宝的,但是这个网格本身其实还是不错的,项目更新中更改了一个布局为网格模式,类似支付宝.(估计是产品抄袭的= ...
- 从零开始编写自己的C#框架(17)——Web层后端首页
后端首页是管理员登陆后进入的第一个页面,主要是显示当前登陆用户信息.在线人数.菜单树列表.相关功能按键和系统介绍.让管理员能更方便的找到息想要的内容. 根据不同系统的需要,首页会显示不同的内容,比如显 ...
- 模仿东京首页banner轮播,京东新闻上下滚动动画实现(动画实现)
接着上篇 微信小程序-阅读小程序demo写:http://www.cnblogs.com/muyixiaoguang/p/5917986.html 首页banner动画实现 京东新闻上下动画实现 想着 ...
随机推荐
- php socket多进程简单服务器(一)
进程,线程 IO复用,协程都是处理完成并发的方式 socket分为 三步 服务器监听,客户端请求,连接确认, 每次连接都由当前进程来处理,可以通过IO复用来解决这个问题, 这次通过进程来完成并发请 ...
- vs2013 v8编译
最新v8,只能在vs2015编译(在官网看了资料,新版本v8/chrome使用的c++11特性只能用vs2015编译) vs2015 vc需要的dll有近50个,发布不太方便,所以采用vs2013up ...
- day04-Servlet介绍(1)
1.servlet的概述 a.什么是servlet --servlet是javaWeb的三大组件(Listener,Filter)之一,他属于动态资源 --servlet的作用是(10086): 服务 ...
- zxlizsm
好久没发表了,毕业之后就没回来过!
- Windows Server 2012 配置远程桌面帐户允许多用户同时登录
网上找了很多关于设置远程桌面最大连接数的文章,大都是说先要到控制面板的管理工具中设置远程桌面会话主机等,大体和我之前的文章<设置WINDOWS SERVER 2008修改远程桌面连接数>里 ...
- 【Linux】vim的使用
使用vi和vim的原因:linux很多软件默认调用vi进行编辑,因此有必要熟悉它的使用规则 vi: 打开文件: vi 文件名 [一般模式]打开文件时进入一般模式,这个模式下的操作: 上下左右移动光标 ...
- Dom4j 封装DOM和SAX 的方法
Dom4j 封装DOM的解析XML文件的方法: List<Book> bookList=new ArrayList<Book>(); //1.1 建立一个解析器工厂: Docu ...
- C/C++中volatile关键字详解
1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier.这是 BS 在 "The ...
- SSM+MyBatis框架详解
- 谈谈websocket集群的解决方式
上文我们已经利用websocket实现微信二维码支付的业务. 上述实现在单机环境中实现是没有什么问题的,无非就是客户端连接服务端,首先将连接的websocketsession存在一个map里面,当异步 ...