• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps Listview wrong image

Hello,

i try to make a listview white movie posters, now wen i run the app and go to the listview the image's are on the rong item. I cant find a solution. How can i fix this problem?

adapter
Java:
public class BinderData_programma extends BaseAdapter {
    // TODO http://stackoverflow.com/questions/27583418/use-advanced-xml-white-on-android

    LayoutInflater inflater;
    List<HashMap<String,String>> ProgrammaLijst;
    //ViewHolder holder;

    public BinderData_programma() {}

    public BinderData_programma(Activity act, List<HashMap<String, String>> map) {
        this.ProgrammaLijst = map;
        inflater = (LayoutInflater) act.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

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

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

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

    public View getView(int position, View convertView, ViewGroup parent) {
        //ViewHolder holder;
        ViewHolder holder = null;

        View vi=convertView;
        if(convertView==null){
            vi = inflater.inflate(R.layout.list_row_programma, null);
            holder = new ViewHolder();
            holder.titel = (TextView)vi.findViewById(R.id.titel); // naam
            holder.poster =(ImageView)vi.findViewById(R.id.poster); // poster
            holder.speelduur =(TextView)vi.findViewById(R.id.speelduur); // speelduur
            holder.genre =(TextView)vi.findViewById(R.id.genre); // genre
            vi.setTag(holder);
        } else{
            holder = (ViewHolder)vi.getTag();
        }

        // Invoegen van variabels
        holder.titel.setText(ProgrammaLijst.get(position).get("naam")); // naam
        String ImageFlag = "" + holder.poster.getTag();
        if(ImageFlag.equals("null")) {
            holder.poster.setTag(ProgrammaLijst.get(position).get("poster")); //poster
            Log.v("flagkey", ImageFlag);
            holder.poster.setImageBitmap(null);
            new GetPoster().execute(holder.poster);
        }
        if(ProgrammaLijst.get(position).get("speelduur").equals("")) {
            holder.speelduur.setText(""); //speelduur
        } else {
            holder.speelduur.setText(ProgrammaLijst.get(position).get("speelduur") + " Min"); //speelduur
        }
        if(ProgrammaLijst.get(position).get("genre").equals("")) {
            holder.genre.setText(""); //speelduur
        } else {
            holder.genre.setText(ProgrammaLijst.get(position).get("genre")); //speelduur
        }
        return vi;
    }

    public static class ViewHolder{
        TextView titel;
        TextView genre;
        TextView speelduur;
        ImageView poster;
    }
}

getposter()
Java:
public class GetPoster extends AsyncTask<ImageView, Void, Bitmap> {
    ImageView imageView; //imagevieuw waar de foto moet komen
    Bitmap return_var_DIB;

    @Override
    protected Bitmap doInBackground(ImageView... imageViews) { //doen in de achtergrond
        this.imageView = imageViews[0];
        BitmapFactory.Options options;

        String poster_key = imageViews[0].getTag().toString();
        if(poster_key.equals("")) {
            poster_key = "leeg"; // geef lege key op
        }
        //app map zoeken
        File sdCard = Environment.getExternalStorageDirectory(); // Ophalen van de SD kaart locatie
        File directory = new File(sdCard.getAbsolutePath() + "/android/data/be.app.programma/case"); //Aanmaken van de map
        directory.mkdirs(); // map aanmaken
        String poster_pad = sdCard + "/android/data/be.app.programma/case/" + poster_key;
        File poster = new File(directory, poster_key); // aanmaken
        if (poster.exists()) {
            //output poster
            return_var_DIB = BitmapFactory.decodeFile(poster_pad); //file to bitmap
        } else {
            //Downloaden
            return_var_DIB = download_Image((String) poster_key, (File) poster, (String) poster_pad);
        }

        return return_var_DIB;
    }

    @Override
    protected void onPostExecute(Bitmap result) { //als alles klaar is
        if(result != null) {
            imageView.setImageBitmap(result);
        }
    }
    private Bitmap download_Image(String key, File poster, String poster_pad) { //foto downloaden
        Bitmap poster_bmp = null;
        //
        try {
            URL url = new URL("http://www.app.*.be/data/foto_adapter.php?key=" + key);
            URLConnection connection = url.openConnection();
            connection.connect();

            InputStream input = new BufferedInputStream(url.openStream()); // het bestand downloaden
            OutputStream output = new FileOutputStream(poster); // opslaan van het bestand
            OutputStreamWriter osw = new OutputStreamWriter(output); //van het bestand

            byte data[] = new byte[1024];
            //total = 0;
            int count;
            while ((count = input.read(data)) != -1) {
                //total += count;
                // Publish the progress
                //publishProgress((int) (total * 100 / fileLength)); // updaten progress bar
                output.write(data, 0, count);
            }
            poster_bmp = BitmapFactory.decodeFile(poster_pad);

            osw.flush(); // legen van de output
            osw.close(); // sluiten an de output
            input.close(); // (lege) input sluiten
        } catch (Exception e) {
            // Error Log
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        //
        return poster_bmp;
    }
}

Tanks
christophe195
 
Back
Top Bottom