Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid ListView ArrayAdapter
    primarykey
    data
    text
    <p>I'm trying to use a lazylist to load my images and I'm using an array for my datas. But I cant figure out how to implement it into my view holder. Please check my codes below. this line of code</p> <pre><code>imageLoader.DisplayImage(worldpopulationlist.get(position).getFlag(), holder.flag); </code></pre> <p>The method DisplayImage(String, ImageView) in the type ImageLoader is not applicable for the arguments (int, ImageView)</p> <p>ListViewAdapter</p> <pre><code>public class ListViewAdapter extends BaseAdapter { // Declare Variables Context mContext; LayoutInflater inflater; private List&lt;WorldPopulation&gt; worldpopulationlist = null; private ArrayList&lt;WorldPopulation&gt; arraylist; ImageLoader imageLoader; public ListViewAdapter(Context context, List&lt;WorldPopulation&gt; worldpopulationlist) { mContext = context; this.worldpopulationlist = worldpopulationlist; inflater = LayoutInflater.from(mContext); this.arraylist = new ArrayList&lt;WorldPopulation&gt;(); this.arraylist.addAll(worldpopulationlist); imageLoader = new ImageLoader(mContext); } public class ViewHolder { TextView rank; TextView country; TextView population; ImageView flag; } @Override public int getCount() { return worldpopulationlist.size(); } @Override public WorldPopulation getItem(int position) { return worldpopulationlist.get(position); } @Override public long getItemId(int position) { return position; } public View getView(final int position, View view, ViewGroup parent) { final ViewHolder holder; if (view == null) { holder = new ViewHolder(); view = inflater.inflate(R.layout.listview_item, null); holder.rank = (TextView) view.findViewById(R.id.rank); holder.country = (TextView) view.findViewById(R.id.country); holder.population = (TextView) view.findViewById(R.id.population); holder.flag = (ImageView) view.findViewById(R.id.flag); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } holder.rank.setText(worldpopulationlist.get(position).getRank()); holder.country.setText(worldpopulationlist.get(position).getCountry()); holder.population.setText(worldpopulationlist.get(position).getPopulation()); //holder.flag.setImageResource(worldpopulationlist.get(position).getFlag()); imageLoader.DisplayImage(worldpopulationlist.get(position).getFlag(), holder.flag); </code></pre> <p>Imageloader</p> <pre><code>public class ImageLoader { MemoryCache memoryCache = new MemoryCache(); private Map&lt;ImageView, String&gt; imageViews = Collections .synchronizedMap(new WeakHashMap&lt;ImageView, String&gt;()); ExecutorService executorService; // Handler to display images in UI thread Handler handler = new Handler(); public ImageLoader(Context context) { executorService = Executors.newFixedThreadPool(5); } final int tempimage = R.drawable.temp_image; public void DisplayImage(String url, ImageView imageView) { imageViews.put(imageView, url); Bitmap bitmap = memoryCache.get(url); if (bitmap != null) imageView.setImageBitmap(bitmap); else { queuePhoto(url, imageView); imageView.setImageResource(tempimage); } } private void queuePhoto(String url, ImageView imageView) { PhotoToLoad p = new PhotoToLoad(url, imageView); executorService.submit(new PhotosLoader(p)); } private Bitmap getBitmap(String url) { File f = new File(url); Bitmap b = decodeFile(f); if (b != null) { return b; } return null; } // Decodes image and scales it to reduce memory consumption private Bitmap decodeFile(File f) { try { // Decode image size BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; FileInputStream stream1 = new FileInputStream(f); BitmapFactory.decodeStream(stream1, null, o); stream1.close(); // Find the correct scale value. It should be the power of 2. // Recommended Size 512 final int REQUIRED_SIZE = 512; int width_tmp = o.outWidth, height_tmp = o.outHeight; int scale = 1; while (true) { if (width_tmp / 2 &lt; REQUIRED_SIZE || height_tmp / 2 &lt; REQUIRED_SIZE) break; width_tmp /= 2; height_tmp /= 2; scale *= 2; } // Decode with inSampleSize BitmapFactory.Options o2 = new BitmapFactory.Options(); o2.inSampleSize = scale; FileInputStream stream2 = new FileInputStream(f); Bitmap bitmap = BitmapFactory.decodeStream(stream2, null, o2); stream2.close(); return bitmap; } catch (FileNotFoundException e) { } catch (IOException e) { e.printStackTrace(); } return null; } // Task for the queue private class PhotoToLoad { public String url; public ImageView imageView; public PhotoToLoad(String u, ImageView i) { url = u; imageView = i; } } class PhotosLoader implements Runnable { PhotoToLoad photoToLoad; PhotosLoader(PhotoToLoad photoToLoad) { this.photoToLoad = photoToLoad; } @Override public void run() { try { if (imageViewReused(photoToLoad)) return; Bitmap bmp = getBitmap(photoToLoad.url); memoryCache.put(photoToLoad.url, bmp); if (imageViewReused(photoToLoad)) return; BitmapDisplayer bd = new BitmapDisplayer(bmp, photoToLoad); handler.post(bd); } catch (Throwable th) { th.printStackTrace(); } } } boolean imageViewReused(PhotoToLoad photoToLoad) { String tag = imageViews.get(photoToLoad.imageView); if (tag == null || !tag.equals(photoToLoad.url)) return true; return false; } // Used to display bitmap in the UI thread class BitmapDisplayer implements Runnable { Bitmap bitmap; PhotoToLoad photoToLoad; public BitmapDisplayer(Bitmap b, PhotoToLoad p) { bitmap = b; photoToLoad = p; } public void run() { if (imageViewReused(photoToLoad)) return; if (bitmap != null) photoToLoad.imageView.setImageBitmap(bitmap); else photoToLoad.imageView.setImageResource(tempimage); } } public void clearCache() { memoryCache.clear(); } } </code></pre> <p>Worldpopulation</p> <pre><code>public class WorldPopulation { private String rank; private String country; private String population; private int flag; public WorldPopulation(String rank, String country, String population, int flag) { this.rank = rank; this.country = country; this.population = population; this.flag = flag; } public String getRank() { return this.rank; } public String getCountry() { return this.country; } public String getPopulation() { return this.population; } public int getFlag() { return this.flag; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload