package de.theknut.xposedgelsettings.ui; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.ImageView; import android.widget.TextView; import java.util.List; import de.theknut.xposedgelsettings.R; import de.theknut.xposedgelsettings.ui.ImageLoader.ViewHolder; public class ShortcutsList extends ActionBarListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CommonUI.CONTEXT = CommonUI.ACTIVITY = this; getListView().setCacheColorHint(getResources().getColor(R.color.primary_dark)); getListView().setBackgroundColor(getResources().getColor(R.color.primary_dark)); Intent shortcutsIntent = new Intent(Intent.ACTION_CREATE_SHORTCUT); AppArrayAdapter adapter = new AppArrayAdapter(this, getPackageManager(), getPackageManager().queryIntentActivities(shortcutsIntent, 0)); setListAdapter(adapter); } public class AppArrayAdapter extends ArrayAdapter<ResolveInfo> { private Context context; private List<ResolveInfo> values; private PackageManager pm; private LayoutInflater inflater; public AppArrayAdapter(Context context, PackageManager pm, List<ResolveInfo> values) { super(context, R.layout.row, values); this.context = context; this.values = values; this.pm = pm; this.inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public View getView(int position, View convertView, ViewGroup parent) { ResolveInfo item = values.get(position); ViewHolder holder; View rowView = convertView; if (rowView == null) { holder = new ViewHolder(); rowView = inflater.inflate(R.layout.row, parent, false); holder.imageView = (ImageView) rowView.findViewById(R.id.badgepreviewicon); holder.textView = (TextView) rowView.findViewById(R.id.name); holder.checkBox = (CheckBox) rowView.findViewById(R.id.checkbox); holder.imageView.setImageResource(android.R.drawable.sym_def_app_icon); rowView.setTag(holder); } holder = (ViewHolder) rowView.getTag(); holder.textView.setText(item.loadLabel(pm)); holder.checkBox.setVisibility(View.GONE); holder.checkBox.setTag(new ComponentName(item.activityInfo.packageName, item.activityInfo.name).flattenToString()); holder.loadImageAsync(pm, item, holder); return rowView; } } }