Files
assistant-android/app/src/main/java/com/gh/gamecenter/adapter/FileSenderAdapter.java
CsHeng b3d63c5698 1、处理viewholder
2、处理adapter
3、
2017-06-16 15:39:45 +08:00

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);
}
}