Java Android:在我的项目中使用ImageLoader?
因此,我对如何在我的项目中正确实现ImageLoader有点困惑,因为我参考的大多数项目都涉及创建一个全局可访问的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
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是否有效?否则我不知道。到目前为止,毕加索总是成功加载我所有的图像。