类似于安卓市场或机锋这样的 有个安装的按钮 然后有个进度条 当触发这个按钮后就会有进度条更新 这个我不知道如何去做了 请教一下大家 看代码
继承的BaseAdapter不多说
- Java code
public class GamesInfoListAdapter extends BaseAdapter{................}
重点在getView
- Java code
@Override public View getView(final int index, View convertView, ViewGroup parent) { Log.d("ccf", "getView"+index); final GridHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.gridview_item, null); holder = new GridHolder(); holder.appImage = (ImageView)convertView.findViewById(R.id.itemImage_logo); holder.appName = (TextView)convertView.findViewById(R.id.itemText_name); holder.appNet = (TextView)convertView.findViewById(R.id.itemText_type_name); holder.btns = (ImageButton)convertView.findViewById(R.id.btns); holder.size = (TextView)convertView.findViewById(R.id.tv_game_size); holder.pro = (ProgressBar) convertView.findViewById(R.id.progressBar1); holder.textView = (TextView) convertView.findViewById(R.id.tv_size); holder.ratingBarScore = (RatingBar)convertView.findViewById(R.id.ratingBar_score); convertView.setTag(holder); }else{ holder = (GridHolder) convertView.getTag(); } GameInfo info = null; info = list.get(index); if (info != null) { if(info.getLogo_url() != null){ //如果取得到图片就用取到的网络图片,不然就用默认 Log.d("ccf", info.getLogo_url().substring(21)); holder.appImage.setImageBitmap(info.getDownloadBitmap()); } holder.appName.setText(info.getName()); holder.appNet.setText(info.getTypeName()); holder.size.setText(info.getSize()); holder.ratingBarScore.setRating(Float.parseFloat(info.getSourceScore()));//评分 暂时注销掉 holder.btns.setTag(info.getDownLoadFileUrl()); final String gameName; gameName = info.getName(); holder.btns .setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { //触发下载操作 if (flag == 0){//判断点击标记 holder.ratingBarScore.setVisibility(View.GONE); holder.pro.setVisibility(View.VISIBLE); holder.textView.setVisibility(View.VISIBLE); if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ }else {// Toast.makeText(this, "没有SD卡", 1000).show(); Log.v("wjp", "7889900"); } final String downloadUrl =(String)v.getTag(); Thread thread = new Thread(){ int count = 0; public void run(){ Log.v("ccf", "onClick"); try { WebHelper.downLoadFile(context, downloadUrl, gameName); WebHelper.openFile(context, new File("/sdcard/9twan/"+ gameName +".apk")); if(!WebHelper.REGISTER_FLAG){ Log.v("GamesInfoListAdapter", "WebHelper.REGISTER_FLAG == false"); String imei, mac, mobile_number, model, brand; boolean flag; TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); imei = tm.getDeviceId(); if(imei == null){ imei = "CUSTOM" + WebHelper.generateRandomIMEIString(15); } mac = null;// mac = tm.getDeviceId(); //这个自己写个取WIFI的方法 if(mac == null){ mac = "CUSTOM" + WebHelper.generateRandomMacString(17); } mobile_number = tm.getLine1Number(); model = tm.getLine1Number(); brand = tm.getLine1Number(); flag = WebHelper.regDevice(context, "install", imei, mac, mobile_number, model, brand); if(flag){ WebHelper.REGISTER_FLAG = true; Log.v("GamesInfoListAdapter", "WebHelper.REGISTER_FLAG == true"); } } }catch (Exception e){ e.printStackTrace(); } } }; Log.v("wjp", "正在运行"+thread.getName()); thread.start(); Toast.makeText(context, "开始下载" + gameName, 0).show(); holder.btns.setBackgroundResource(R.drawable.tab_out); flag =1; }else {// Thread.interrupted();//暂停 返回boolean// Thread.sleep(3000); holder.btns.setBackgroundResource(R.drawable.tab_install); flag =0; } } }); } return convertView; }