package com.k3.k3pler.adapter; import android.content.Context; import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; import android.support.v7.widget.RecyclerView; import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.k3.k3pler.R; import com.k3.k3pler.sub.HTTPReq; import java.util.ArrayList; import io.netty.handler.codec.DecoderResult; /** Adapter for recyclerView list [main page] **/ public class RequestAdapter extends RecyclerView.Adapter<RequestAdapter.ViewHolder> { private Context context; public ArrayList<HTTPReq> requests; private int requestColor; public interface OnItemClickListener { void onItemClick(HTTPReq item, int i); } private OnItemClickListener onItemClickListener; public class ViewHolder extends RecyclerView.ViewHolder { private TextView txvRequest; public ViewHolder(View view) { super(view); txvRequest = view.findViewById(R.id.txvRequest); } public void bind(final HTTPReq item, final int i, final OnItemClickListener listener) { itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.onItemClick(item, i); } }); } } public RequestAdapter(Context context, ArrayList<HTTPReq> requests, OnItemClickListener onItemClickListener) { this.context = context; this.requests = requests; this.onItemClickListener = onItemClickListener; } @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.list_requests, parent, false); return new ViewHolder(itemView); } @Override @SuppressWarnings("deprecation") public void onBindViewHolder(@NonNull ViewHolder holder, int position) { if (requests.get(position).getBlocked()) requestColor = ContextCompat.getColor(context, android.R.color.holo_red_dark); else requestColor = ContextCompat.getColor(context, android.R.color.white); String method = String.valueOf(requests.get(position).getMethod().charAt(0)); String protocol = requests.get(position).getProtocol().replace("HTTP", "H"); String decoderResult = getShortResult(requests.get(position).getResult()); String htmlEntry = "<b>"+ "<font color=\"" + requestColor + "\">" + requests.get(position).getUri() + "</font>"+"<font color=\""+ ContextCompat.getColor(context, R.color.color2) + "\">" +" ~ </font>"+"<font color=\""+ ContextCompat.getColor(context, R.color.k3pler2) + "\">" + method +"</font>"+"<font color=\""+ ContextCompat.getColor(context, R.color.color1) + "\">" + " [" + protocol + "] " +"</font>"+"<font color=\""+ ContextCompat.getColor(context, R.color.orange) + "\">" + "_" + decoderResult + "_ " +"</font>"+"<font color=\""+ ContextCompat.getColor(context, R.color.lightYellow) + "\">" + " " + requests.get(position).getTime() +"</font>" + "</b>"; holder.txvRequest.setText(Html.fromHtml(htmlEntry)); holder.bind(requests.get(position), position, onItemClickListener); } @Override public int getItemCount() { return requests.size(); } private String getShortResult(DecoderResult result){ if (result.isSuccess()) return "S"; else if (result.isFinished()) return "F"; else if (result.isFailure()) return "X"; else return "-"; } public static String getLongResult(DecoderResult result){ return result.toString(); } }