package edu.berkeley.cs.amplab.carat.android.lists; import java.util.Collections; import java.util.List; import edu.berkeley.cs.amplab.carat.android.R; import edu.berkeley.cs.amplab.carat.android.CaratApplication; import edu.berkeley.cs.amplab.carat.android.sampling.SamplingLibrary; import edu.berkeley.cs.amplab.carat.thrift.ProcessInfo; import android.content.Context; import android.content.pm.PackageInfo; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; public class ProcessInfoAdapter extends BaseAdapter { private static List<ProcessInfo> searchArrayList; private LayoutInflater mInflater; private Context c = null; public ProcessInfoAdapter(Context context, List<ProcessInfo> results) { this.c = context; searchArrayList = results; Collections.sort(searchArrayList, new AlphabeticalProcessInfoSort(context)); mInflater = LayoutInflater.from(context); } public int getCount() { return searchArrayList.size(); } public Object getItem(int position) { return searchArrayList.get(position); } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.process, null); holder = new ViewHolder(); holder.appIcon = (ImageView) convertView .findViewById(R.id.app_icon); holder.txtName = (TextView) convertView .findViewById(R.id.processName); holder.pkgName = (TextView) convertView .findViewById(R.id.pkgName); holder.txtBenefit = (TextView) convertView .findViewById(R.id.processPriority); // holder.moreInfo = (ImageView) // convertView.findViewById(R.id.moreinfo); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } if (searchArrayList == null || position < 0 || position >= searchArrayList.size()) return convertView; ProcessInfo x = searchArrayList.get(position); if (x == null) return convertView; String p = x.getPName(); PackageInfo pak = SamplingLibrary.getPackageInfo(c, p); String ver = ""; if (pak != null){ ver = pak.versionName; if (ver == null) ver = pak.versionCode+""; } holder.appIcon.setImageDrawable(CaratApplication.iconForApp(c, p)); holder.pkgName.setText(p); holder.txtName.setText(CaratApplication.labelForApp(c, p)+ " " + ver); holder.txtBenefit.setText(CaratApplication.translatedPriority(x.getImportance())); // holder.moreInfo... return convertView; } static class ViewHolder { ImageView appIcon; TextView txtName; TextView txtBenefit; TextView pkgName; // ImageView moreInfo; } }