package com.tamic.fastdownsimple; import android.content.Context; import android.support.annotation.DrawableRes; import android.text.format.Formatter; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import com.tamic.fastdownsimple.widget.AbstractViewHolder; import com.tamic.rx.fastdown.DLMimeType; import com.tamic.rx.fastdown.content.DownLoadInfo; import com.tamic.rx.fastdown.core.RxDownLoadCenter; import com.tamic.rx.fastdown.core.DownLoadBuilder; import com.tamic.rx.fastdown.core.RxDownLoadCenter; import com.tamic.rx.fastdown.core.RxDownloadManager; import com.tamic.rx.fastdown.util.Utils; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import static com.tamic.fastdownsimple.R.id.percent; /** * DownloadViewHolder * Created by Tamic on 2016-12-27. */ public class DownloadViewHolder extends AbstractViewHolder<DownLoadInfo> { @BindView(R.id.img) public ImageView mImg; @BindView(percent) public TextView mPercent; @BindView(R.id.progress) public ProgressBar mProgress; @BindView(R.id.size) public TextView mSize; @BindView(R.id.filesize) public TextView mFlieSize; @BindView(R.id.speed) public TextView mSpeed; @BindView(R.id.status) public Button mStatus; DownLoadInfo data; private Context mContext; public DownloadViewHolder(ViewGroup parent) { super(parent, R.layout.reclye_download_item); ButterKnife.bind(this, itemView); mContext = parent.getContext(); } @Override public void setData(DownLoadInfo data) { this.data = data; checkTypeUI(data); mProgress.setMax((int) data.mTotalbytes); mProgress.setProgress((int) data.mDownloadedbytes); mSpeed.setText(Formatter.formatFileSize(mContext, data.mSpeed) + "/s"); mPercent.setText(data.mFilename); mSize.setText(Utils.formatFilesize(data.mDownloadedbytes) + "/" ); mFlieSize.setText(Utils.formatFilesize(data.mTotalbytes)); checkUI(data); } private void checkTypeUI(DownLoadInfo data) { switch (data.itemFileType()) { case DLMimeType.APK: mImg.setBackgroundResource(R.drawable.apk); break; case DLMimeType.JPEG: mImg.setBackgroundResource(R.drawable.image); break; case DLMimeType.BMP: mImg.setBackgroundResource(R.drawable.image); break; case DLMimeType.PNG: mImg.setBackgroundResource(R.drawable.image); break; case DLMimeType.PDF: mImg.setBackgroundResource(R.drawable.pdf); break; case DLMimeType.TXT: mImg.setBackgroundResource(R.drawable.txt); break; case DLMimeType.VIDEO: mImg.setBackgroundResource(R.drawable.video); break; case DLMimeType.OTHERS: mImg.setBackgroundResource(R.drawable.file); break; default: mImg.setBackgroundResource(R.drawable.file); break; // more Type , you need to add 。。。。。 } } private void checkUI(DownLoadInfo data) { switch (data.mStatus) { case RUNNING: setSatus(R.drawable.status_down, "下载中"); mSize.setVisibility(View.VISIBLE); break; case SUCCESS: setSatus(R.drawable.status_right, "完成"); mSpeed.setText("下载已完成"); mProgress.setMax(100); mProgress.setProgress(100); mSize.setVisibility(View.INVISIBLE); break; case PAUSED: setSatus(R.drawable.status_pused, "继续"); mSpeed.setText("已暂停,点击继续"); break; case FAIL: setSatus(R.drawable.status_alert, "重试"); mSpeed.setText("下载出错,请重试"); mSize.setVisibility(View.INVISIBLE); break; case AUTOPAUSE: setSatus(R.drawable.status_down, "继续"); mSpeed.setText("下载已自动暂停,点击继续"); mSize.setVisibility(View.VISIBLE); break; case READY: setSatus(R.drawable.status_pused, "等待中"); mSpeed.setText("任务正在排队中,请稍后...."); mSize.setVisibility(View.INVISIBLE); break; default: setSatus(R.drawable.status_down, "开始"); break; } } private void setSatus(@DrawableRes int resId, String tpis) { // mStatus.setText(tpis); mStatus.setBackgroundResource(resId); } @OnClick(R.id.status) public void onClick() { switch (data.mStatus) { case RUNNING: RxDownLoadCenter.getInstance(mContext).pausetask(data.mKey, true); Toast.makeText(mContext, "已暂停", Toast.LENGTH_SHORT).show(); case READY: //点击暂停 RxDownLoadCenter.getInstance(mContext).pausetask(data.mKey, true); Toast.makeText(mContext, "已暂停", Toast.LENGTH_SHORT).show(); break; case PAUSED: RxDownLoadCenter.getInstance(mContext).resumeTask(data.mKey, true); break; case FAIL: RxDownLoadCenter.getInstance(mContext).addTask(data); break; case SUCCESS: Toast.makeText(mContext, "已下载完成,不要重复点啦", Toast.LENGTH_SHORT).show(); break; default: break; } } }