Java Android:在我的项目中使用ImageLoader?

Java Android:在我的项目中使用ImageLoader?,java,android,image,android-adapter,universal-image-loader,Java,Android,Image,Android Adapter,Universal Image Loader,因此,我对如何在我的项目中正确实现ImageLoader有点困惑,因为我参考的大多数项目都涉及创建一个全局可访问的ImageLoader对象并通过适配器访问它。然而,我的班级是这样固定的: public class ProductGridInflator extends ArrayAdapter<Product>{ private int[] Imageid; ArrayList<Product> dbProducts; Context ctx

因此,我对如何在我的项目中正确实现ImageLoader有点困惑,因为我参考的大多数项目都涉及创建一个全局可访问的ImageLoader对象并通过适配器访问它。然而,我的班级是这样固定的:

public class ProductGridInflator extends ArrayAdapter<Product>{
    private int[] Imageid; 
    ArrayList<Product> dbProducts; 
    Context ctx; 
    int resource; 
    ArrayList<Image> urlArr = new ArrayList<Image>();
    ArrayList<Image> dbImages = new ArrayList<Image>();

    public ProductGridInflator(Context context, int resource,ArrayList<Product> objects, ArrayList<Image> obj) {
        super(context, resource, objects);
        // TODO Auto-generated constructor stub
        this.dbProducts = objects;
        this.ctx = context;
        this.resource = resource;
        this.dbImages = obj;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        if(dbProducts.size() == 0){
            return 0;
        }else{
            return dbProducts.size();
        }
    }


    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View child = convertView;
        RecordHolder holder;
        LayoutInflater inflater = ((Activity) ctx).getLayoutInflater(); // inflating your xml layout

        if (child == null) {            
            child = inflater.inflate(R.layout.grid_single, parent, false);
            holder = new RecordHolder();
            holder.productName = (TextView) child.findViewById(R.id.grid_text); // fname is the reference to a textview

            holder.image = (ImageView) child.findViewById(R.id.grid_image);
            child.setTag(holder);
        }else{
            holder = (RecordHolder) child.getTag();
        }

        final Product user = dbProducts.get(position); 

        holder.productName.setText(user.getNAME());    

        for(int i=0;i<dbImages.size();i++)
        {
            if(dbImages.get(i).PID.equals(user.PID))
            {
                //holder.image is my image holder
                //This is where the URL should be accessed and image to be added
                String URL = dbImages.get(i).URL;
            }
            else
                continue;
        }

        return child;
    }
公共类ProductGridInflator扩展了ArrayAdapter{
私有int[]Imageid;
ArrayList数据库产品;
上下文ctx;
智力资源;
ArrayList urlArr=新的ArrayList();
ArrayList dbImages=新的ArrayList();
公共产品GridInflator(上下文上下文、int资源、ArrayList对象、ArrayList对象){
超级(上下文、资源、对象);
//TODO自动生成的构造函数存根
this.dbProducts=对象;
this.ctx=上下文;
这个资源=资源;
this.dbImages=obj;
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
if(dbProducts.size()==0){
返回0;
}否则{
返回dbProducts.size();
}
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
视图子对象=转换视图;
记录持有者;
LayoutInflater充气器=((活动)ctx).getLayoutInflater();//充气xml布局
如果(child==null){
子项=充气机。充气(R.layout.grid_单个,父项,false);
holder=新记录持有者();
holder.productName=(TextView)child.findViewById(R.id.grid_text);//fname是对TextView的引用
holder.image=(ImageView)child.findViewById(R.id.grid\u image);
子标签(支架);
}否则{
holder=(RecordHolder)child.getTag();
}
最终产品用户=dbProducts.get(位置);
holder.productName.setText(user.getNAME());

对于(int i=0;i请查看毕加索图书馆:


它可以满足您的所有需要。它将图像加载到您的ImageView中,甚至支持缓存。它非常易于使用。

我现在使用的是Picaso,但它不会加载某些图片!我不知道为什么。.图像大小与其他图像相似,类型和分辨率也相似,但大多数时候它都不会加载图像。您是否使用了c检查图像URL是否有效?否则我不知道。到目前为止,毕加索总是成功加载我所有的图像。