package com.prateekj.snooper.networksnooper.adapter; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import com.google.common.base.Function; import com.prateekj.snooper.R; import com.prateekj.snooper.networksnooper.model.HttpHeader; import com.prateekj.snooper.networksnooper.viewmodel.HttpHeaderViewModel; import java.util.List; import static android.view.LayoutInflater.from; import static com.google.common.collect.Lists.transform; public class HttpHeaderAdapter extends BaseAdapter { private final List<HttpHeaderViewModel> viewModels; private HttpHeaderAdapter(List<HttpHeader> headers) { viewModels = toViewModels(headers); } @Override public int getCount() { return viewModels.size(); } @Override public Object getItem(int position) { return viewModels.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { HttpHeaderViewModel viewModel = viewModels.get(position); View view = convertView != null ? convertView : newView(parent); return bindView(view, viewModel); } private View newView(ViewGroup parent) { return from(parent.getContext()).inflate(R.layout.header_list_item, parent, false); } private View bindView(View view, HttpHeaderViewModel viewModel) { ((TextView)view.findViewById(R.id.header_name)).setText(viewModel.headerName()); ((TextView)view.findViewById(R.id.header_value)).setText(viewModel.headerValues()); return view; } private List<HttpHeaderViewModel> toViewModels(List<HttpHeader> headers) { return transform(headers, new Function<HttpHeader, HttpHeaderViewModel>() { @Override public HttpHeaderViewModel apply(HttpHeader httpHeader) { return new HttpHeaderViewModel(httpHeader); } }); } public static HttpHeaderAdapter newInstance(List<HttpHeader> headers) { return new HttpHeaderAdapter(headers); } }