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";
 }
}

BaseListView (自定义listview)

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));
 }
}

HomeFragment

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);
 }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android机器圈

美团点餐—listview内部按钮点击事件

这里面有一个类Item,就是一个实体类,里面只有name和num,和setget方法。具体看注释

5035
来自专栏Android知识点总结

3-AVI--Activity与Fragment的数据传递

1672
来自专栏图像识别与深度学习

《Android》Lesson03-监听器、Toast

2009
来自专栏james大数据架构

Android中Fragment+ViewPager的配合使用

官方推荐 ViewPager与Fragment一起使用,可以更加方便的管理每个Page的生命周期,这里有标准的适配器实现用于ViewPager和Fragment...

24910
来自专栏学海无涯

Android开发之Fragment动态使用

在 Android开发之奇怪的Fragment 一文中,讲到了Fragment的基础知识,这次来重点讨论一下Fragment的动态使用。这种情况主要针对布局文件...

2747
来自专栏猿份到

仿网易栏目添加功能

在qq群里面发现一个小伙伴有需要做类似于网易新闻客户端栏目拖拽添加的这种效果,特意做了类似效果,效果图如下(文章结尾有源码链接): ? ? ? ? 实现了点击...

3648
来自专栏Android开发指南

10.侧拉删除

34411
来自专栏Android Note

Android-悬浮窗效果FloatingView

2783
来自专栏Keegan小钢

Android项目重构之路:实现篇(三)

在这个Demo里,只有三个页面:登录页、注册页、券列表页。在这里,也会遵循界面篇提到的三个基本原则:规范性、单一性、简洁性。 首先,界面层需要调用核心层的Act...

942
来自专栏向治洪

关于ListView中包含EditText数据复用引起异常的解决方案

概述 前几天测试提了一个bug,在ListView中添加留言信息,导致错乱的问题。实际上就是ListView需要添加一个EditText,复用导致错乱的问题,这...

2409

扫码关注云+社区

领取腾讯云代金券