156 lines
6.8 KiB
Java
156 lines
6.8 KiB
Java
package com.gh.gamecenter.adapter;
|
|
|
|
import android.graphics.drawable.ColorDrawable;
|
|
import android.support.v4.content.ContextCompat;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
|
|
import com.gh.base.adapter.BaseRecyclerAdapter;
|
|
import com.gh.common.util.DisplayUtils;
|
|
import com.gh.common.util.SpeedUtils;
|
|
import com.gh.common.util.Utils;
|
|
import com.gh.gamecenter.FileSenderActivity;
|
|
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/20.
|
|
*/
|
|
public class FileSenderAdapter extends BaseRecyclerAdapter<KcSelectGameViewHolder> {
|
|
private List<FileInfo> mFileInfos;
|
|
|
|
private long mLastProgress;
|
|
|
|
private OnCancelListener mCancelListener;
|
|
|
|
public FileSenderAdapter(FileSenderActivity context, OnCancelListener listener, List<FileInfo> fileInfos) {
|
|
super(context);
|
|
mCancelListener = listener;
|
|
mFileInfos = fileInfos;
|
|
mLastProgress = 0;
|
|
|
|
}
|
|
|
|
@Override
|
|
public KcSelectGameViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
|
View view = mLayoutInflater.inflate(R.layout.kc_game_select_item, parent, false);
|
|
return new KcSelectGameViewHolder(view);
|
|
}
|
|
|
|
@Override
|
|
public void onBindViewHolder(final KcSelectGameViewHolder holder, int position) {
|
|
FileInfo fileInfo = mFileInfos.get(position);
|
|
|
|
holder.gameNameAndSize.setText(fileInfo.getName());
|
|
holder.downloadStatus.setVisibility(View.VISIBLE);
|
|
holder.sendOverIcon.setVisibility(View.GONE);
|
|
holder.gameProgressbar.setMax(100);
|
|
holder.gameProgressbar.setVisibility(View.VISIBLE);
|
|
holder.gameLlInfo.setVisibility(View.VISIBLE);
|
|
holder.gameSize.setVisibility(View.GONE);
|
|
holder.gameNameAndSize.setPadding(0, 0, 0, DisplayUtils.dip2px(mContext, 5));
|
|
|
|
holder.downloadSpeed.setText("等待中");
|
|
holder.downloadSpeed.setTextColor(ContextCompat.getColor(mContext, R.color.content));
|
|
holder.gameProgressbar.setProgress(0);
|
|
holder.sendOverIcon.setVisibility(View.GONE);
|
|
holder.downloadStatus.setText("取消");
|
|
holder.downloadStatus.setTextColor(ContextCompat.getColor(mContext, R.color.content));
|
|
holder.downloadStatus.setBackgroundResource(R.drawable.kuaichuan_cancel_bg);
|
|
|
|
int percent = (int) (fileInfo.getProgress() * 100 / fileInfo.getSize());
|
|
holder.downloadPercentage.setText(percent + "%");
|
|
|
|
|
|
if (fileInfo.getBitmap() != null) {
|
|
holder.gameThumb.setImageBitmap(fileInfo.getBitmap());
|
|
}
|
|
|
|
if (fileInfo.getResult() == FileInfo.FLAG_SUCCESS) { // 传输完成...
|
|
holder.gameProgressbar.setProgress(100);
|
|
holder.downloadPercentage.setText("100%");
|
|
// viewHolder.downloadStatus.setText("传输成功");
|
|
holder.downloadStatus.setVisibility(View.GONE);
|
|
holder.sendOverIcon.setVisibility(View.VISIBLE);
|
|
double size = (((float) fileInfo.getSize() / 1024) / 1024);
|
|
DecimalFormat df = new DecimalFormat("0.00");
|
|
String sizeName = df.format(size) + "MB";
|
|
holder.downloadSpeed.setTextColor(ContextCompat.getColor(mContext, R.color.content));
|
|
holder.downloadSpeed.setText(sizeName + "/" + sizeName);
|
|
} else if (fileInfo.getResult() == FileInfo.FLAG_FAILURE) { // 传输失败...
|
|
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;
|
|
if (curSizeMb == 0) {
|
|
curSizeName = "0.00MB";
|
|
} else {
|
|
curSizeName = df.format(curSizeMb) + "MB";
|
|
}
|
|
holder.gameProgressbar.setProgress(percent);
|
|
holder.downloadSpeed.setTextColor(ContextCompat.getColor(mContext, R.color.content));
|
|
holder.downloadSpeed.setText(curSizeName + "/" + sizeName);
|
|
holder.downloadStatus.setText("传输失败");
|
|
holder.sendOverIcon.setVisibility(View.GONE);
|
|
holder.downloadStatus.setTextColor(ContextCompat.getColor(mContext, R.color.type_huodong));
|
|
holder.downloadStatus.setBackgroundDrawable(new ColorDrawable(0));
|
|
// viewHolder.downloadPercentage.setText(percent + "%");
|
|
} 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";
|
|
holder.sendOverIcon.setVisibility(View.GONE);
|
|
holder.downloadSpeed.setTextColor(ContextCompat.getColor(mContext, R.color.content));
|
|
holder.downloadSpeed.setText(curSizeName + "/" + sizeName);
|
|
holder.downloadStatus.setText("已取消");
|
|
holder.downloadStatus.setBackgroundDrawable(new ColorDrawable(0));
|
|
|
|
holder.gameProgressbar.setProgress(percent);
|
|
} else if (fileInfo.getResult() == FileInfo.FLAG_DEFAULT) { // 传输中...
|
|
holder.gameProgressbar.setProgress(percent);
|
|
holder.sendOverIcon.setVisibility(View.GONE);
|
|
holder.downloadStatus.setText("取消");
|
|
holder.downloadStatus.setTextColor(ContextCompat.getColor(mContext, R.color.content));
|
|
holder.downloadStatus.setBackgroundResource(R.drawable.kuaichuan_cancel_bg);
|
|
|
|
long speed = (fileInfo.getProgress() - mLastProgress) / 1024;
|
|
if (speed < 0) {
|
|
speed = 0;
|
|
}
|
|
|
|
// viewHolder.downloadPercentage.setText(percent + "%");
|
|
holder.downloadSpeed.setTextColor(ContextCompat.getColor(mContext, R.color.theme));
|
|
holder.downloadSpeed.setText(String.format("%s(剩%s)",
|
|
SpeedUtils.getSpeed(speed),
|
|
SpeedUtils.getRemainTime(fileInfo.getSize(), fileInfo.getProgress(), speed * 1024)));
|
|
mLastProgress = fileInfo.getProgress();
|
|
|
|
holder.downloadStatus.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
mCancelListener.OnCancelPosition(holder.getAdapterPosition());
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|
|
|
|
@Override
|
|
public int getItemCount() {
|
|
Utils.log("FileSenderActivity :: adapter" + mFileInfos.size());
|
|
return mFileInfos.size();
|
|
}
|
|
|
|
public interface OnCancelListener {
|
|
void OnCancelPosition(int position);
|
|
}
|
|
|
|
}
|