Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 未使用Novoda/ImageLoader加载图像_Android_Image_Android Gridview_Support Image Loader - Fatal编程技术网

Android 未使用Novoda/ImageLoader加载图像

Android 未使用Novoda/ImageLoader加载图像,android,image,android-gridview,support-image-loader,Android,Image,Android Gridview,Support Image Loader,我正在尝试使用ImageLoader库从internet将图像加载到网格视图中。但是,在imageManager.getLoader().load(fView.pic)处获取空指针异常 谁能告诉我哪里错了 StartApp等级: public class StartApp extends Application { private static ImageManager imageManager; @Override public void onCreate() {

我正在尝试使用ImageLoader库从internet将图像加载到网格视图中。但是,在
imageManager.getLoader().load(fView.pic)处获取空指针异常

谁能告诉我哪里错了

StartApp等级:

public class StartApp extends Application {

    private static ImageManager imageManager;

    @Override
    public void onCreate() {
        super.onCreate();
        LoaderSettings settings = new LoaderSettings();

        settings.setDisconnectOnEveryCall(true);
        settings.setCacheManager(new LruBitmapCache(this));

        imageManager = new ImageManager(this, settings);
        // // To clean the file cache
        // imageManager.getFileManager().clean();

    }

    public static ImageManager getImageLoader() {
        return imageManager;
    }
}
活动类别:

public class MainActivity extends Activity {
    private GridView gridview;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.grid_layout);

        gridview = (GridView) findViewById(R.id.gridview);
        gridview.setPadding(10, 10, 10, 10);
        gridview.setAdapter(new GridImageAdapter(this));

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}
扩展BaseAdapter的GridView适配器类:

public class GridImageAdapter extends BaseAdapter {
    private Context context;
    private int width = 270;
    private int height = 270;
    private int textFactor = 35;
    private LayoutInflater layoutInflater;

    private String[] nameEvents = {"image1","image2"};
    private String[] urls = {"http://api.androidhive.info/images/sample.jpg","http://api.androidhive.info/images/sample.jpg" };
    ImageManager imageManager;
    ImageTagFactory imageTagFactory;

    public GridImageAdapter(Context mContext) {
        context = mContext;
        layoutInflater = LayoutInflater.from(context);

        /*Image Loader*/
        imageManager = StartApp.getImageLoader();
        imageTagFactory = ImageTagFactory.newInstance(context,  R.drawable.ic_launcher);
        imageTagFactory.setErrorImageId(R.drawable.not_found);
    }

    public int getCount() {

        return nameEvents.length;
    }

    public Object getItem(int position) {

        return position;
    }

    public long getItemId(int position) {

        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {

        FriendView fView = new FriendView();
        int imagePadding = 10;
        if (convertView == null) {
            convertView = new View(context);
            convertView = layoutInflater.inflate(R.layout.grid_cell_layout,
                    null);
            // convertView.setBackgroundColor(Color.DKGRAY);
            convertView.setPadding(3, 0, imagePadding - 1, imagePadding);
            convertView.setBackgroundResource(R.drawable.background_shadow);
            convertView
                    .setLayoutParams(new GridView.LayoutParams(width, height));

        } else {
            fView = (FriendView) convertView.getTag();

        }
        fView.pic = (ImageView) convertView.findViewById(R.id.image);
        /* height has to be reduced to display the text */
        fView.pic.setLayoutParams(new LinearLayout.LayoutParams(width, height
                - textFactor));
        fView.pic.setAdjustViewBounds(true);
        fView.pic.setScaleType(ImageView.ScaleType.FIT_XY);



        //((StartApp) context.getApplicationContext()).getImageLoader().getLoader().load(imageView);
        fView.name = (TextView) convertView.findViewById(R.id.title);
        fView.name.setTextColor(Color.BLACK);
        convertView.setTag(fView);

        fView.name.setText(nameEvents[position]);
    //  GridImageAdapter.imageLoader.DisplayImage(urls[position], fView.pic);
        ((ImageView) fView.pic).setTag(imageTagFactory.build(urls[position],context));
        imageManager.getLoader().load(fView.pic);

        return convertView;
    }

    static class FriendView {
        TextView name;
        ImageView pic;
    }
}

提前感谢。

首先,不要在适配器中创建imagemanager的另一个对象。执行StartApp.getImageLoader().getLoader().load(fView.pic)

其次,通过添加一些空检查和/或日志记录(如果是空的或不是空的),可以很容易地找到空指针。然后我们就可以知道什么对象是空的

例如:

if(StartApp.getImageLoader().getLoader() != null) {
    StartApp.getImageLoader().getLoader().load(fView.pic);
}

看起来您没有正确设置应用程序类 确保在清单中声明应用程序类,如下所示:

    <application android:name="class" ...

See answer将帮助您。谢谢@MAC。但是,我正在使用ImageLoader库下载图像,然后将其设置为网格视图适配器。