So guys, I've been trying to do a gallery app for my phone using gridview container and here's my code:
Adapter Code:
package com.mahmoud.myapplication;
import android.content.Context;
import android.graphics.Camera;
import android.os.Environment;
import android.provider.ContactsContract;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import java.io.File;
import java.util.Dictionary;
/**
* Created by mahmoud on 04/11/2015.
*/
public class ImageAdapter extends BaseAdapter {
private Context context;
File image_num = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
String[] listOfPictures = image_num.list();
public ImageAdapter(Context context)
{
this.context = context;
}
@Override
public int getCount() {
return listOfPictures.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv;
if(convertView == null)
{
iv = new ImageView(context);
iv.setLayoutParams(new GridView.LayoutParams(100,100));
iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
iv.setPadding(8,8,8,8);
}
else
{
iv = (ImageView) convertView;
}
iv.setImageResource(Integer.parseInt(listOfPictures[position]));
return iv;
}
}
Main Activity:
package com.mahmoud.myapplication;
import android.app.Activity;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
public class MainActivity extends Activity {
GridView picGrid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
picGrid = (GridView) findViewById(R.id.gridView);
picGrid.setAdapter(new ImageAdapter(this));
}
}
Error:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mahmoud.myapplication/com.mahmoud.myapplication.MainActivity}: java.lang.NullPointerException: Attempt to get length of null array
any idea why this is happening, I know it's about me using the .length but I just don't know where exactly the mistake is. please note that the DCIM file is not empty (has pictures in it).