我试图在对话框中显示已安装的应用程序列表,单击按钮。应用程序列表应该在 gridview 中。
我的代码如下
mapapp.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
loadApps();
final Dialog dialog = new Dialog(getApplicationContext());
LayoutInflater inflater = (LayoutInflater)
getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.categorydialog,
(ViewGroup) findViewById(R.id.layout_root));
dialog.setTitle("Title...");
GridView mGrid = (GridView) layout.findViewById(R.id.gridview);
mGrid.setAdapter(new AppsAdapter(MainActivity.this));
mGrid.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
}
});
}
});
方法
private void loadApps() {
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
mApps = getPackageManager().queryIntentActivities(mainIntent, 0);
}
适配器如下
public class AppsAdapter extends BaseAdapter {
private Context mContext;
public AppsAdapter(Context context) {
mContext = context;
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView i;
if (convertView == null) {
i = new ImageView(mContext);
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
i.setLayoutParams(new GridView.LayoutParams(50, 50));
} else {
i = (ImageView) convertView;
}
ResolveInfo info = mApps.get(position);
i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));
return i;
}
public final int getCount() {
return mApps.size();
}
public final Object getItem(int position) {
return mApps.get(position);
}
public final long getItemId(int position) {
return position;
}
}
没有错误,也没有显示任何内容。请建议我在哪里可能做错了。