package androidx.plmgrdemo; import java.util.ArrayList; import java.util.Collection; import java.util.List; import android.content.Context; import android.graphics.drawable.Drawable; import android.text.TextUtils.TruncateAt; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import androidx.pluginmgr.PlugInfo; class PlugListViewAdapter extends BaseAdapter { private LayoutInflater inflater = null; private List<PlugInfo> datas; private Context mContext; public PlugListViewAdapter(Context context, Collection<PlugInfo> datas) { mContext = context; inflater = LayoutInflater.from(context); this.datas = new ArrayList<PlugInfo>(datas); } @Override public int getCount() { return datas.size(); } @Override public Object getItem(int position) { return datas.get(position); } @Override public long getItemId(int position) { return datas.get(position).getId().hashCode(); } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder mViewHolder = null; if (convertView == null) { mViewHolder = new ViewHolder(); convertView = inflater.inflate(R.layout.plug_item, null); mViewHolder.title = (TextView) convertView .findViewById(R.id.plug_title); mViewHolder.icon = (ImageView) convertView .findViewById(R.id.plug_icon); mViewHolder.description = (TextView) convertView .findViewById(R.id.plug_description); mViewHolder.description.setSingleLine(true); mViewHolder.description.setTextSize(16.0f); mViewHolder.description.setEllipsize(TruncateAt.END); convertView.setTag(mViewHolder); } else { mViewHolder = (ViewHolder) convertView.getTag(); } PlugInfo plug = datas.get(position); { int labelRes = plug.getPackageInfo().applicationInfo.labelRes; if (labelRes != 0) { String label = plug.getResources().getString(labelRes); mViewHolder.title.setText(label); } else { CharSequence label = plug.getPackageInfo().applicationInfo .loadLabel(mContext.getPackageManager()); if (label != null) { mViewHolder.title.setText(label); } } } Drawable drawable = plug.getResources().getDrawable( plug.getPackageInfo().applicationInfo.icon); mViewHolder.icon.setImageDrawable(drawable); String descText; int descId = plug.getPackageInfo().applicationInfo.descriptionRes; if (descId == 0) { descText = plug.getId(); } else { descText = plug.getResources().getString(descId); } mViewHolder.description.setText(descText); return convertView; } static class ViewHolder { public TextView title; public ImageView icon; public TextView description; } }