在gridview [通用图像加载器]中加载图像

时间:2013-01-04 16:05:39

标签: android

我正在尝试使用通用图像加载程序将图像加载到gridview中,但我的应用程序似乎在活动加载时崩溃,我无法识别问题。我正在从数组加载图像,然后调用图像适配器来填充它们。

我通过应用程序进行了调试,但在LogCat中没有看到任何突出的内容。

非常感谢所有帮助:)

public class MainActivity extends Activity {

    String[] imageUrls;

    DisplayImageOptions options;
    protected ImageLoader imageLoader = ImageLoader.getInstance();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Bundle bundle = getIntent().getExtras();
        imageUrls = bundle.getStringArray(Extra.IMAGES);

        options = new DisplayImageOptions.Builder()
            .showStubImage(R.drawable.stub_image)
            .showImageForEmptyUri(R.drawable.image_for_empty_url)
            .cacheInMemory()
            .cacheOnDisc()
            .bitmapConfig(Bitmap.Config.RGB_565)
            .build();

        GridView gridView = (GridView) findViewById(R.id.gridview);
        gridView.setAdapter(new ImageAdapter());


    }

    public class ImageAdapter extends BaseAdapter {
        @Override
        public int getCount() {
            return imageUrls.length;
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            final ImageView imageView;
            if (convertView == null) {
                imageView = (ImageView) getLayoutInflater().inflate(R.layout.item_grid_image, parent, false);
            } else {
                imageView = (ImageView) convertView;
            }

            imageLoader.displayImage(imageUrls[position], imageView, options);

            return imageView;
        }
    }
}

编辑:Logcat错误:“AndroidRuntime(6789):java.lang.RuntimeException:在使用”

之前,ImageLoader必须是带配置的init

1 个答案:

答案 0 :(得分:0)

快速回答: 要在LogCat中获取某些内容,您可以执行类似

的操作
try{

// Your code

}catch (Exception e){

    log.e(e.tostring());
}

此外,我通常将列表/数组放在适配器类中,并通过函数

进行修改
ImageAdapter.add(string s)

并在适配器中:

List<String> imageURLs = new List<String>;

public int add(String s) {
    imageURLs.add(s);
    notifyDataSetChanged();
}

我希望这有帮助!