Reputation: 4632
I have a grid view its showing some images from SD card it showing properly but only when I am scrolling it loading images again and again that is why scrolling is too slow I don't know why it loading images every time when I am scrolling (images that are not showing inside the screen.)
My code
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (c.moveToFirst())
{
do
{
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.grid_row_view, null);
holder = new ViewHolder();
holder.ImgThumb = (ImageView) convertView.findViewById(R.id.imgThumb);
holder.Viewcover = (ImageView) convertView.findViewById(R.id.cover);
holder.PdfUrl = (TextView) convertView.findViewById(R.id.hiddenPdfUrl);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
String imagePath = Environment.getExternalStorageDirectory().toString() + "/ICA Faculty/";
holder.ImgThumb.setImageDrawable(Drawable.createFromPath(imagePath + imgUrl.get(position)));
holder.Viewcover.setImageResource(R.drawable.book_cover);
holder.PdfUrl.setText(pdfUrl.get(position));
} while (c.moveToNext());
}
return convertView;
}
private class ViewHolder {
ImageView ImgThumb;
ImageView Viewcover;
TextView PdfUrl;
}
Upvotes: 0
Views: 772
Reputation: 11359
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
//final boolean result = ( position == 0 ) ? c.moveToFirst() : c.moveToNext();
if (c.moveToPosition(position))
{
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.grid_row_view, null);
holder = new ViewHolder();
holder.ImgThumb = (ImageView) convertView.findViewById(R.id.imgThumb);
holder.Viewcover = (ImageView) convertView.findViewById(R.id.cover);
holder.PdfUrl = (TextView) convertView.findViewById(R.id.hiddenPdfUrl);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
String imagePath = Environment.getExternalStorageDirectory().toString() + "/ICA Faculty/";
holder.ImgThumb.setImageDrawable(Drawable.createFromPath(imagePath + imgUrl.get(position)));
holder.Viewcover.setImageResource(R.drawable.book_cover);
holder.PdfUrl.setText(pdfUrl.get(position));
}
return convertView;
}
Also Inside getCount
method of your adapter return c.getCount();
Upvotes: 1
Reputation: 1037
That's because you're loading all the images for every image... If you're using a cursor, consider using a SimpleCursorAdapter.
Upvotes: 1