package com.prateekj.snooper.networksnooper.adapter; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.prateekj.snooper.R; import com.prateekj.snooper.networksnooper.model.HttpCall; import com.prateekj.snooper.networksnooper.repo.SnooperRepo; import com.prateekj.snooper.networksnooper.viewmodel.HttpCallViewModel; import java.util.List; import static com.prateekj.snooper.utils.UIUtils.setTextColor; public class HttpCallListAdapter extends RecyclerView.Adapter<HttpCallListAdapter.HttpCallViewHolder> { private final List<HttpCall> httpCalls; private HttpCallListClickListener listener; public HttpCallListAdapter(SnooperRepo repo, HttpCallListClickListener listener) { this.listener = listener; httpCalls = repo.findAll(); } public class HttpCallViewHolder extends RecyclerView.ViewHolder { private View view; public HttpCallViewHolder(View view) { super(view); this.view = view; } public void bind(HttpCall httpCall) { HttpCallViewModel httpCallViewModel = new HttpCallViewModel(httpCall); ((TextView) view.findViewById(R.id.url)).setText(httpCallViewModel.getUrl()); ((TextView) view.findViewById(R.id.method)).setText(httpCallViewModel.getMethod()); ((TextView) view.findViewById(R.id.status_code)).setText(httpCallViewModel.getStatusCode()); ((TextView) view.findViewById(R.id.status_text)).setText(httpCallViewModel.getStatusText()); ((TextView) view.findViewById(R.id.time_stamp)).setText(httpCallViewModel.getTimeStamp()); setTextColor((TextView) view.findViewById(R.id.method), httpCallViewModel.getStatusColor()); setTextColor((TextView) view.findViewById(R.id.status_code), httpCallViewModel.getStatusColor()); setTextColor((TextView) view.findViewById(R.id.status_text), httpCallViewModel.getStatusColor()); setClickListener(httpCall); } private void setClickListener(final HttpCall httpCall) { this.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.onClick(httpCall); } }); } } @Override public HttpCallViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { LayoutInflater inflater = LayoutInflater.from(parent.getContext()); View listItemView = inflater.inflate(R.layout.activity_http_call_list_item, parent, false); return new HttpCallViewHolder(listItemView); } @Override public void onBindViewHolder(HttpCallViewHolder holder, int position) { holder.bind(httpCalls.get(position)); } @Override public int getItemCount() { return httpCalls.size(); } }