# GooglePlayCQCDay02 **Repository Path**: googlepalycqc/GooglePlayCQCDay02 ## Basic Information - **Project Name**: GooglePlayCQCDay02 - **Description**: 第二天 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2016-10-20 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简介 # 完成首页+应用+游戏,这3个 tab,包含的知识点有:请求数据 +pullTofresh + ImageLoader +轮播图 + listView # Step1:listView显示数据 # ## HomeFrag: ## > 注意:更新ui需要再主线程,所以CommonUtil.runOnUIThread(...) ``` @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { contentPager = new ContentPager(getActivity()) { @Override public Object requestData() { return getData(); } @Override public View createSuccessView() { return getSuccessView(); } }; return contentPager; } protected View getSuccessView() { view = View.inflate(getActivity(), R.layout.frag_home, null); listView = (ListView) view.findViewById(R.id.listView); adapter = new HomeFragAdapter(appsList); listView.setAdapter(adapter); return view; } protected Object getData() { String json = HttpHelper.get(NetUrl.GAME +appsList.size()); List list = (List) GsonUtil.jsonToList(json, new TypeToken>() {}.getType()); addAndRefreshData(list); return list; } private void addAndRefreshData(List list) { appsList.addAll(list); CommonUtil.runOnUIThread(new Runnable() { @Override public void run() { adapter.notifyDataSetChanged(); } }); } ``` ## HomeFragAdapter: ## > 格式化app的大小:包:String android.text.format: 方法: Formatter.formatFileSize(Context context, long number) ``` public class HomeFragAdapter extends MyBaseAdapter { public HomeFragAdapter(List list) { super(list); } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = View.inflate(parent.getContext(), R.layout.item_home_frag, null); holder = new ViewHolder(convertView); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } AppInfoBean info = list.get(position); ImageLoader.getInstance().displayImage(NetUrl.IMAGE_PREFIX + info.getIconUrl(), holder.iv, ImageLoaderOptions.options); holder.tv_name.setText(info.getName()); holder.tv_size.setText("" + Formatter.formatFileSize(MyApplication.getContext(), info.getSize())); holder.tv_desc.setText(info.getDes()); holder.ratingBar.setRating(info.getStars()); return convertView; } public class ViewHolder { public ImageView iv; public RatingBar ratingBar; public TextView tv_name; public TextView tv_size; public TextView tv_desc; public ViewHolder(View itemView) { super(); iv = (ImageView) itemView.findViewById(R.id.iv_item_frag_home); ratingBar = (RatingBar) itemView.findViewById(R.id.ratingBar); tv_name = (TextView) itemView.findViewById(R.id.tv_name_frag_home); tv_size = (TextView) itemView.findViewById(R.id.tv_app_size_frag_home); tv_desc = (TextView) itemView.findViewById(R.id.tv_app_desc_frag_home); } } } ``` ## RatingBar ## ``` ``` ratingbar_drawable.xml ``` ``` # 添加刷新 pulltorefresh # 参考:[第三方开源库:Android-PullToRefresh-master简单使用 ](http://blog.csdn.net/ss1168805219/article/details/52081566) ``` protected View getSuccessView() { view = View.inflate(getActivity(), R.layout.frag_home, null); ptr = (PullToRefreshListView) view.findViewById(R.id.pull_refresh_list); ptr.setMode(Mode.BOTH); ptr.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh(PullToRefreshBase refreshView) { if (refreshView.getCurrentMode() == Mode.PULL_FROM_START) {// 下拉刷新 handler.sendEmptyMessageDelayed(WHAT1, 1500); } else {// 上拉加载更多 // handler.sendEmptyMessageDelayed(WHAT2, 1500);//模拟上拉加载更多 contentPager.loadDataAndRefresh(); } } }); listView = ptr.getRefreshableView(); adapter = new HomeFragAdapter(appsList); listView.setAdapter(adapter); return view; } ``` # imageloader # [第三方开源库:imageLoader的使用 ](http://blog.csdn.net/ss1168805219/article/details/51084239) 先要在application中初始化,在设置DisplayImageOptions,然后根据url显示图片 ``` ImageLoader.getInstance().displayImage(NetUrl.IMAGE_PREFIX + info.getIconUrl(), holder.iv, ImageLoaderOptions.options); ``` # 轮播图 # ``` private void initBanner() { findHeadViews(); initPictDescList(); initDots(); initViewPager(); } private void initViewPager() { BannerPagerAdapter adapter = new BannerPagerAdapter(pictUrlList); viewPager.setAdapter(adapter); listView.addHeaderView(headView); tv_desc.setText("第一张图"); tv_ratio.setText(1 + "/" + pictUrlList.size()); viewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int position) { tv_desc.setText(pictDescList.get(position)); tv_ratio.setText(1 + position + "/" + pictUrlList.size()); for (int i = 0; i < dotsList.size(); i++) { if (i == position) { dotsList.get(i).setBackgroundResource(R.drawable.dot_focus); } else { dotsList.get(i).setBackgroundResource(R.drawable.dot_normal); } } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) {} @Override public void onPageScrollStateChanged(int arg0) {} }); } private void findHeadViews() { headView = View.inflate(MyApplication.getContext(), R.layout.layout_banner, null); viewPager = (ViewPager) headView.findViewById(R.id.viewpager_banner); tv_desc = (TextView) headView.findViewById(R.id.tv_desc_banner); tv_ratio = (TextView) headView.findViewById(R.id.tv_ratio_banner); ll_dots = (LinearLayout) headView.findViewById(R.id.ll_dots); } private void initDots() { ll_dots.removeAllViews(); dotsList.clear(); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(10, 10); for (int i = 0; i < pictUrlList.size(); i++) { TextView tv = new TextView(getActivity()); if (i == 0) { tv.setBackgroundResource(R.drawable.dot_focus); } else { tv.setBackgroundResource(R.drawable.dot_normal); } params.setMargins(10, 0, 0, 0); ll_dots.addView(tv, params); dotsList.add(tv); } } private void initPictDescList() { for (int i = 0; i < pictUrlList.size(); i++) { pictDescList.add("第" + (i + 1) + "张图"); } } ```