package com.gh.gamecenter.adapter; import android.graphics.drawable.ColorDrawable; import android.view.View; import android.view.ViewGroup; import com.gh.common.util.*; 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 { private List mFileInfos; private long mLastProgress; private OnCancelListener mCancelListener; public FileSenderAdapter(FileSenderActivity context, OnCancelListener listener, List 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(KcSelectGameViewHolder holder, final 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(mContext.getResources().getColor(R.color.content)); holder.gameProgressbar.setProgress(0); holder.sendOverIcon.setVisibility(View.GONE); holder.downloadStatus.setText("取消"); holder.downloadStatus.setTextColor(mContext.getResources().getColor(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(mContext.getResources().getColor(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(mContext.getResources().getColor(R.color.content)); holder.downloadSpeed.setText(curSizeName + "/" + sizeName); holder.downloadStatus.setText("传输失败"); holder.sendOverIcon.setVisibility(View.GONE); holder.downloadStatus.setTextColor(mContext.getResources().getColor(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(mContext.getResources().getColor(R.color.content)); holder.downloadSpeed.setText(curSizeName + "/" + sizeName); holder.downloadStatus.setText("已取消"); holder.downloadStatus.setBackgroundDrawable(new ColorDrawable(0)); Utils.log("==========已取消" + percent + "===" + fileInfo.getProgress()); 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(mContext.getResources().getColor(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(mContext.getResources().getColor(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(position); } }); } } @Override public int getItemCount() { Utils.log("FileSenderActivity :: adapter" + mFileInfos.size()); return mFileInfos.size(); } public interface OnCancelListener { void OnCancelPosition(int position); } }