Look Inside YourselfActionAdapter is a class we need to implement, to pour a ResolveInfo into
the row layouts for our ListView. Hence, add the following ActionAdapter
implementation as an inner class of Contacter:
class ActionAdapter extends ArrayAdapter<ResolveInfo> {
private PackageManager pm=null;ActionAdapter(PackageManager pm, List<ResolveInfo> apps) {
super(Contacter.this, R.layout.row, apps);
this.pm=pm;
}@Override
public View getView(int position, View convertView,
ViewGroup parent) {
if (convertView==null) {
convertView=newView(parent);
}bindView(position, convertView);return(convertView);
}private View newView(ViewGroup parent) {
return(getLayoutInflater().inflate(R.layout.row, parent, false));
}private void bindView(int position, View row) {
TextView label=(TextView)row.findViewById(R.id.label);label.setText(getItem(position).loadLabel(pm));ImageView icon=(ImageView)row.findViewById(R.id.icon);icon.setImageDrawable(getItem(position).loadIcon(pm));
}
}At this point, you can compile and install your Contacter application.
Initially, the list is empty, so the screen just shows the button: