I am writing a very Basic Home Launcher, I have made a class AppsInfoModel, a CustomAdapter and a GridView in AppsGridActivity.
Here is my code for populating the adapter in Activity
appsGrid = (GridView) findViewById(R.id.appsGrid); appsInfo = new AppsInfoModel(this); appsGrid.setAdapter(new CustomAdapter(this,appsInfo));
Here is adapter
public class CustomAdapter extends BaseAdapter { Context context; AppsInfoModel appInfo; CustomAdapter(Context context,AppsInfoModel appInfo) { this.context = context; this.appInfo = appInfo; } @Override public int getCount() { return appInfo.getSize(); } @Override public Object getItem(int position) { return appInfo.getItem(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = ((Activity) context).getLayoutInflater(); convertView = inflater.inflate(R.layout.single_grid, parent, false); ImageView icon = (ImageView) convertView.findViewById(R.id.app_icon); icon.setImageDrawable(appInfo.getIcon(position)); TextView label = (TextView) convertView.findViewById(R.id.app_label); label.setText(appInfo.getLabel(position)); return convertView; } else return convertView; }
}
And Model class
public class AppsInfoModel { String label[]; String name[]; Drawable icon[]; PackageManager pm; List<ResolveInfo> appsInfo; AppsInfoModel(Context context){ pm=context.getPackageManager(); appsInfo = pm.queryIntentActivities(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER), 0); for(int i=0;i<appsInfo.size();i++){ label[i]= (appsInfo.get(i).loadLabel(pm)).toString();//***This is where problem lies according to LogCat*** name[i]= (appsInfo.get(i)).activityInfo.packageName; icon[i]=(appsInfo.get(i)).activityInfo.loadIcon(pm); } } Drawable getIcon(int i){ return icon[i]; } String getLabel(int i){ return label[i]; } String getPackageName(int i){ return name[i]; } int getSize(){ return appsInfo.size(); } public ResolveInfo getItem(int i) { return appsInfo.get(i); } }
And Here is the Logcat error
Why is it occuring? what is the problem with the logic or syntax.