2013-03-28 106 views
1

我想优化我的应用程序中的照片库,并且遇到了通用图像加载程序。但是,将其实施到我的应用程序中的所有尝试都失败了。 这里有2班从我目前的应用:活动类:使用通用图像加载程序

public class Galerija extends Activity { 

ArrayList<RSSItem> lista = new ArrayList<RSSItem>(); 
ArrayList<String> lst_slika = new ArrayList<String>(); 
RSSItem tempItem = new RSSItem(); 
ImageAdapter adapter; 


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

    try 
    { 
     SAXParserFactory spf = SAXParserFactory.newInstance(); 
     SAXParser sp = spf.newSAXParser(); 
     XMLReader myReader = sp.getXMLReader(); 

     URL url = new URL("http://erdut.gausstesting.info/generateXML/galerija.php"); 

     XMLHandler myXMLHandler = new XMLHandler(); 
     myReader.setContentHandler(myXMLHandler); 
     myReader.parse(new InputSource(url.openStream())); 
     lista = myXMLHandler.getRss_lista(); 
     lst_slika = lista.get(0).getImages(); 

    } catch (Exception e) { 
     System.out.println(e); 
    } 

    adapter = new ImageAdapter(this, lst_slika); 
    GridView gridview = (GridView) findViewById(R.id.gridview); 
    gridview.setAdapter(adapter); 

    gridview.setOnItemClickListener(new OnItemClickListener() { 

     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 
      // TODO Auto-generated method stub 

     } 
    }); 

} } 

这里是适配器类:

public class ImageAdapter extends BaseAdapter { 
private Context mContext; 
private ArrayList<String> lista; 


public ImageAdapter(Context c, ArrayList<String> lista) { 
    mContext = c; 
    this.lista = lista; 

} 

public int getCount() { 
    return lista.size(); 
} 

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

public long getItemId(int position) { 
    return 0; 
} 

// create a new ImageView for each item referenced by the Adapter 
public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView; 

    if (convertView == null) { // if it's not recycled, initialize some attributes 
     imageView = new ImageView(mContext); 

     imageView.setLayoutParams(new GridView.LayoutParams(150, 150)); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setPadding(0, 0, 0, 0); 
    } else { 
     imageView = (ImageView) convertView; 
    } 

    new ImageDownloadTask(imageView).execute(lista.get(position)); 

    return imageView; 
}} 

我想通过使用通用图像装载机修改这些类(或任何其他方法以缓存我的图像),因为目前我的照片库活动由于内存不足错误而崩溃。

回答

1

将以下代码行写入适配器的getView()方法,此处imageUrls [position]是Image Urls和holder.image的数组。imageview是imageview。

imageLoader.displayImage(imageUrls[position], holder.image, null); 

并在代码行下方写入适配器构造函数。

ImageLoader imageLoader=new ImageLoader(activity.getApplicationContext()); 

请参阅下面的链接,查看Universal Image Loader Example的完整源代码。

Android - Universal Image Loader

+2

嗯,这给了我一个错误。 构造函数ImageLoader(Context)未定义。 快速修复:删除参数以匹配'ImageLoader()' –

+0

我也有这个相同的错误 – wiseindy

相关问题