182 lines
8.5 KiB
Java
182 lines
8.5 KiB
Java
package com.gh.gamecenter.adapter;
|
|
|
|
import android.content.Context;
|
|
import android.graphics.Color;
|
|
import android.graphics.drawable.ColorDrawable;
|
|
import android.os.Environment;
|
|
import android.support.v7.widget.RecyclerView;
|
|
import android.view.LayoutInflater;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
|
|
import com.gh.common.util.DisplayUtils;
|
|
import com.gh.common.util.PackageUtils;
|
|
import com.gh.common.util.SpeedUtils;
|
|
import com.gh.gamecenter.FileReceiverActivity;
|
|
import com.gh.gamecenter.R;
|
|
import com.gh.gamecenter.adapter.viewholder.KcSelectGameViewHolder;
|
|
import com.gh.gamecenter.kuaichuan.FileInfo;
|
|
|
|
import java.text.DecimalFormat;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* Created by khy on 2017/1/22.
|
|
*/
|
|
public class FileReceiverAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
|
|
|
private Context mContext;
|
|
private List<FileInfo> mFileInfos;
|
|
|
|
private long lastProgress;
|
|
|
|
private OnReceiverCancelListener cancelListener;
|
|
|
|
|
|
public FileReceiverAdapter(FileReceiverActivity activity, List<FileInfo> infos) {
|
|
this.mContext = activity;
|
|
this.cancelListener = activity;
|
|
|
|
mFileInfos = infos;
|
|
}
|
|
|
|
/**
|
|
* 更新数据
|
|
*/
|
|
public void update(){
|
|
// mFileInfos = (List<FileInfo>) AppController.get("FileInfo", false);
|
|
notifyItemRangeChanged(0, getItemCount());
|
|
}
|
|
|
|
@Override
|
|
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
|
View view = LayoutInflater.from(mContext).inflate(R.layout.kc_game_select_item, parent, false);
|
|
return new KcSelectGameViewHolder(view);
|
|
}
|
|
|
|
@Override
|
|
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
|
|
final FileInfo fileInfo = mFileInfos.get(position);
|
|
|
|
if (holder instanceof KcSelectGameViewHolder) {
|
|
final KcSelectGameViewHolder viewHolder = (KcSelectGameViewHolder) holder;
|
|
viewHolder.gameNameAndSize.setText(fileInfo.getName());
|
|
viewHolder.downloadStatus.setVisibility(View.VISIBLE);
|
|
viewHolder.sendOverIcon.setVisibility(View.GONE);
|
|
viewHolder.gameProgressbar.setMax(100);
|
|
viewHolder.gameProgressbar.setVisibility(View.VISIBLE);
|
|
viewHolder.gameLlInfo.setVisibility(View.VISIBLE);
|
|
viewHolder.gameSize.setVisibility(View.GONE);
|
|
viewHolder.gameNameAndSize.setPadding(0, 0, 0, DisplayUtils.dip2px(mContext, 5));
|
|
if (fileInfo.getBitmap() != null) {
|
|
viewHolder.gameThumb.setImageBitmap(fileInfo.getBitmap());
|
|
} else {
|
|
viewHolder.gameThumb.setImageResource(R.drawable.ocupy);
|
|
}
|
|
|
|
viewHolder.downloadSpeed.setText("等待中");
|
|
viewHolder.downloadSpeed.setTextColor(mContext.getResources().getColor(R.color.content));
|
|
viewHolder.gameProgressbar.setProgress(0);
|
|
viewHolder.sendOverIcon.setVisibility(View.GONE);
|
|
viewHolder.downloadStatus.setText("取消");
|
|
viewHolder.downloadStatus.setTextColor(mContext.getResources().getColor(R.color.content));
|
|
viewHolder.downloadStatus.setBackgroundResource(R.drawable.kuaichuan_cancel_bg);
|
|
|
|
int percent = (int)(fileInfo.getProgress() * 100 / fileInfo.getSize());
|
|
viewHolder.downloadPercentage.setText(percent + "%");
|
|
|
|
if (fileInfo.getResult() == FileInfo.FLAG_SUCCESS || fileInfo.getResult() == FileInfo.FLAG_INSTALLED) { // 传输完成...
|
|
viewHolder.gameProgressbar.setProgress(100);
|
|
viewHolder.downloadPercentage.setText("100%");
|
|
|
|
if (fileInfo.getResult() == FileInfo.FLAG_SUCCESS) {
|
|
viewHolder.downloadStatus.setText("安装");
|
|
viewHolder.downloadStatus.setTextColor(Color.WHITE);
|
|
viewHolder.downloadStatus.setBackgroundResource(R.drawable.game_item_btn_download_style);
|
|
} else {
|
|
viewHolder.downloadStatus.setText("已安装");
|
|
viewHolder.downloadStatus.setTextColor(mContext.getResources().getColor(R.color.theme));
|
|
viewHolder.downloadStatus.setBackgroundDrawable(new ColorDrawable(0));
|
|
}
|
|
|
|
double size = (((float)fileInfo.getSize()/1024)/1024);
|
|
DecimalFormat df = new DecimalFormat("0.00");
|
|
String sizeName = df.format(size) + "MB";
|
|
viewHolder.downloadSpeed.setTextColor(mContext.getResources().getColor(R.color.content));
|
|
viewHolder.downloadSpeed.setText(sizeName + "/" + sizeName);
|
|
} else if (fileInfo.getResult() == FileInfo.FLAG_FAILURE || fileInfo.getResult() == FileInfo.FLAG_NO_MEMORY) { // 传输失败...
|
|
double sizeMb = (((float)fileInfo.getSize()/1024)/1024);
|
|
double curSizeMb = (((float)fileInfo.getProgress()/1024)/1024);
|
|
DecimalFormat df = new DecimalFormat("0.00");
|
|
String sizeName = df.format(sizeMb) + "MB";
|
|
String curSizeName = df.format(curSizeMb) + "MB";
|
|
viewHolder.downloadSpeed.setTextColor(mContext.getResources().getColor(R.color.content));
|
|
viewHolder.downloadSpeed.setText(curSizeName + "/" + sizeName);
|
|
viewHolder.downloadStatus.setTextColor(mContext.getResources().getColor(R.color.type_huodong));
|
|
viewHolder.downloadStatus.setBackgroundDrawable(new ColorDrawable(0));
|
|
viewHolder.gameProgressbar.setProgress(percent);
|
|
// viewHolder.downloadPercentage.setText(percent + "%");
|
|
if (fileInfo.getResult() == FileInfo.FLAG_FAILURE) {
|
|
viewHolder.downloadStatus.setText("传输失败");
|
|
} else {
|
|
viewHolder.downloadStatus.setText("空间不足");
|
|
}
|
|
} else if (fileInfo.getResult() == FileInfo.FLAG_CANCEL) { // 取消传输
|
|
double sizeMb = (((float)fileInfo.getSize()/1024)/1024);
|
|
double curSizeMb = (((float)fileInfo.getProgress()/1024)/1024);
|
|
DecimalFormat df = new DecimalFormat("0.00");
|
|
String sizeName = df.format(sizeMb) + "MB";
|
|
String curSizeName = df.format(curSizeMb) + "MB";
|
|
viewHolder.downloadSpeed.setTextColor(mContext.getResources().getColor(R.color.content));
|
|
viewHolder.downloadSpeed.setText(curSizeName + "/" + sizeName);
|
|
viewHolder.downloadStatus.setText("已取消");
|
|
viewHolder.downloadStatus.setBackgroundDrawable(new ColorDrawable(0));
|
|
|
|
viewHolder.gameProgressbar.setProgress(percent);
|
|
// viewHolder.downloadPercentage.setText(percent + "%");
|
|
} else if (fileInfo.getResult() == FileInfo.FLAG_DEFAULT){ // 传输中...
|
|
viewHolder.gameProgressbar.setProgress(percent);
|
|
viewHolder.downloadStatus.setText("取消");
|
|
viewHolder.downloadStatus.setTextColor(mContext.getResources().getColor(R.color.content));
|
|
viewHolder.downloadStatus.setBackgroundResource(R.drawable.kuaichuan_cancel_bg);
|
|
|
|
long speed = (fileInfo.getProgress() - lastProgress) / 1024;
|
|
if (speed < 0) {
|
|
speed = 0;
|
|
}
|
|
|
|
// viewHolder.downloadPercentage.setText(percent + "%");
|
|
viewHolder.downloadSpeed.setTextColor(mContext.getResources().getColor(R.color.theme));
|
|
viewHolder.downloadSpeed.setText(String.format("%s(剩%s)",
|
|
SpeedUtils.getSpeed(speed),
|
|
SpeedUtils.getRemainTime(fileInfo.getSize(), fileInfo.getProgress(), speed * 1024)));
|
|
lastProgress = fileInfo.getProgress();
|
|
}
|
|
|
|
viewHolder.downloadStatus.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
String s = viewHolder.downloadStatus.getText().toString();
|
|
if ("取消".equals(s)) {
|
|
cancelListener.OnCancelPosition(position);
|
|
} else if ("安装".equals(s)) {
|
|
PackageUtils.launchSetup(mContext, Environment.getExternalStorageDirectory() + "/GH-KC/" + fileInfo.getName() + ".apk");
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int getItemCount() {
|
|
if (mFileInfos == null) {
|
|
return 0;
|
|
}
|
|
return mFileInfos.size();
|
|
}
|
|
|
|
public interface OnReceiverCancelListener {
|
|
void OnCancelPosition(int position);
|
|
}
|
|
}
|