package com.dwdesign.tweetings.adapter; import java.util.ArrayList; import java.util.List; import com.dwdesign.tweetings.R; import com.dwdesign.tweetings.model.ExtensionsViewHolder; import android.content.Context; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; public class ExtensionsAdapter extends BaseAdapter { private final PackageManager pm; private final Context context; private final List<ResolveInfo> mData = new ArrayList<ResolveInfo>(); public ExtensionsAdapter(final Context context, final PackageManager pm) { this.pm = pm; this.context = context; } @Override public int getCount() { return mData.size(); } @Override public ResolveInfo getItem(final int position) { return mData.get(position); } @Override public long getItemId(final int position) { return getItem(position).hashCode(); } @Override public View getView(final int position, final View convertView, final ViewGroup parent) { final View view = convertView != null ? convertView : LayoutInflater.from(context).inflate( R.layout.two_line_with_icon_list_item, parent, false); final ExtensionsViewHolder viewholder = view.getTag() == null ? new ExtensionsViewHolder(view) : (ExtensionsViewHolder) view.getTag(); final ResolveInfo info = getItem(position); viewholder.text1.setText(info.loadLabel(pm)); viewholder.text2.setText(info.activityInfo.applicationInfo.loadLabel(pm)); viewholder.icon.setImageDrawable(info.loadIcon(pm)); return view; } public void setData(final List<ResolveInfo> data) { mData.clear(); if (data != null) { mData.addAll(data); } notifyDataSetChanged(); } }