Пример #1
0
    @Override
    public View getView(int position, View convertView, ViewGroup arg2) {
      // TODO Auto-generated method stub
      ViewHolder holder;
      if (convertView == null) {
        holder = new ViewHolder();
        convertView = mInflater.inflate(R.layout.item_download, null, false);
        holder.iv = (ImageView) convertView.findViewById(R.id.item_download_icon);
        holder.tv_name = (TextView) convertView.findViewById(R.id.item_download_name);
        holder.tv_size = (TextView) convertView.findViewById(R.id.item_download_size);
        holder.startBtn = (Button) convertView.findViewById(R.id.item_download_start);
        convertView.setTag(holder);
      } else {
        holder = (ViewHolder) convertView.getTag();
      }
      final GameInfo gi = downloadList.get(position);
      if (gi != null) {
        imageLoader.displayImage(gi.getGame_ico(), holder.iv, options);
        holder.tv_name.setText(gi.getGame_name());
        holder.tv_size.setText(gi.getSize() + "M");
        final String filePath = gi.getFilePath();
        // final String filePath = "mnt/sdcard/test.apk";
        final String pName = Util.getPnameByApk(UserDownloadActivity.this, filePath);
        final boolean isInstalled = Util.isAppInstalled(UserDownloadActivity.this, pName);
        if (isInstalled) {
          holder.startBtn.setText("启动");
        } else {
          holder.startBtn.setText("安装");
        }
        holder.startBtn.setOnClickListener(
            new OnClickListener() {

              @Override
              public void onClick(View v) {
                if (isInstalled) {
                  Util.startAppByPname(UserDownloadActivity.this, pName);
                } else {
                  Util.installApk(UserDownloadActivity.this, filePath);
                }
              }
            });
      }
      convertView.setOnLongClickListener(
          new OnLongClickListener() {

            @Override
            public boolean onLongClick(View v) {
              new AlertDialog.Builder(UserDownloadActivity.this)
                  .setTitle("提示")
                  .setMessage("确认删除" + "?") // 二次提示
                  .setNegativeButton(
                      "取消",
                      new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {}
                      })
                  .setPositiveButton(
                      "确定",
                      new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                          // 删除本地文件
                          File df = new File(gi.getFilePath());
                          System.out.println(
                              "file~~~~~~" + df.getPath() + " file exist() " + df.exists());
                          if (df.exists()) {
                            // 如果文件存在
                            df.delete();
                          }
                          downloadList.remove(gi);
                          notifyDataSetChanged();
                          // 删除数据库中的内容
                          new FinalDBChen(getParent(), DBNAME)
                              .deleteItem(
                                  TABNAME_DOWNLOADTASK,
                                  "game_name=?",
                                  new String[] {gi.getGame_name()});
                          // 发送一个删除文件的广播.让主页的下载按钮变为可下载
                          Intent i = new Intent();
                          i.putExtra(DOWNLOAD_TYPE, DOWNLOAD_STATE_DELETE);
                          i.setAction(DOWNLOAD_TYPE);
                          getMyApplication().setDownloadSuccess(gi);
                          sendBroadcast(i);
                        }
                      })
                  .show();
              return false;
            }
          });
      return convertView;
    }