Meine Aktivität, die die GridView anzeigt, stürzt ab, wenn ich versuche, die genannte Aktivität zu öffnen. Ich habe keine Ahnung, was mit meinen Codes nicht stimmt, bitte hilf mir dabei.Learning GridView
public class AppContainerActivity extends Activity {
private PackageManager manager;
public List<AppDetails> apps;
GridView AppDrawer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_app_container);
AppDrawer = (GridView) findViewById(R.id.AppDrawer);
AppDrawer.setAdapter(new ItemAdapter(this, apps));
}
//Fetch installed apps on device
public void loadApps(){
manager = getPackageManager();
apps = new ArrayList<AppDetails>();
Intent getApp = new Intent(Intent.ACTION_MAIN,null);
getApp.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> availableActivities = manager.queryIntentActivities(getApp, 0);
for(ResolveInfo ri : availableActivities){
AppDetails app = new AppDetails();
app.appIcon = ri.activityInfo.loadIcon(manager);
apps.add(app);
}
}
}
ItemAdapter:
class ItemAdapter extends BaseAdapter {
Context mContext;
Integer[] icon;
ItemAdapter(Context c, List<AppDetails> apps){
mContext = c;
icon = apps.toArray(new Integer[apps.size()]);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return icon.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView appIcon;
if(convertView == null) {
appIcon = new ImageView(mContext);
appIcon.setLayoutParams(new GridView.LayoutParams(85, 85));
appIcon.setScaleType(ImageView.ScaleType.CENTER_CROP);
appIcon.setPadding(8, 8, 8, 8);
} else {
appIcon = (ImageView) convertView;
}
appIcon.setImageResource(icon[position]);
return appIcon;
}
}
AppDetails:
class AppDetails {
Drawable appIcon;
}
XML-Layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<GridView
android:id="@+id/AppDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="auto_fit"
android:columnWidth="70dp"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:scrollbars="horizontal"
android:stretchMode="spacingWidthUniform"
/>
</LinearLayout>
In Ihrem LinearLayout versuchen Sie, android: context = ". AppContainerActivity" –
geben Sie bitte Cat-Protokolle – ddb
Verwenden Sie einen Recycler und GridLayoutManager anstelle einer GridView. –