如何避免在列表视图中添加重复图像

how to avoid duplicate images added in the listview

我正在做一个应用程序,在列表视图中加载当前拍摄的图像,我能够在列表视图中加载图像,但问题是图像在列表中重复查看 3 个项目后,有些 tine然后在 imageview.but 中查看我的需要是在用户拍摄时将图像添加到列表中,请帮助我提前致谢。 @覆盖 public View getView(int position, View convertview, ViewGroup parent) { 查看 vi = convertview;

    try {
        // TODO Auto-generated method stub

        ViewHolder holder;
        if (vi == null) {
            holder = new ViewHolder();

            vi = inflater.inflate(R.layout.my_trip_list_view_items, null);


            holder.place_name = (TextView) vi.findViewById(R.id.my_trip_list_view_place_name);

            holder.Day = (TextView) vi.findViewById(R.id.my_trip_list_view_date_time);
            holder.place_images = (ImageView) vi.findViewById(R.id.my_trip_list_view_Image_view);

            //*Note svg*//*
            holder. place_images.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
            menu_svg = SVGParser.getSVGFromResource(context.getResources(), R.raw.map_2);
            holder.place_images.setImageDrawable(menu_svg.createPictureDrawable());



            vi.setTag(holder);
        } else {
            holder = (ViewHolder) vi.getTag();
        }
        // images_view = new MyTrip_getmethod();
        String location_name = Location.get(position).toString();
        System.out.println("location_name>>>>>>>>>>>" + location_name);
        holder.place_name.setText(location_name);
        System.out.println("location_name>>>>>>>>>>>" + holder.place_name);

        holder.Day.setText(day.get(position).toString());
        System.out.println(" ### imgFile----" + image);

        holder.place_images.setImageBitmap(image.get(position));


        System.out.println("location_name>>im>>>>>>>>>>>" + holder.place_images);

        notifyDataSetChanged();

    } catch (Exception e) {
        e.printStackTrace();
    }
    return vi;
}

这是列表视图回收的问题issue.tO使用适配器的 getview 方法的位置参数避免为图像视图设置标签class。

try {
        // TODO Auto-generated method stub
        int crnposition=position; 
        ViewHolder holder;
        if (vi == null) {
            holder = new ViewHolder();

            vi = inflater.inflate(R.layout.my_trip_list_view_items, null);


            holder.place_name = (TextView) vi.findViewById(R.id.my_trip_list_view_place_name);

            holder.Day = (TextView) vi.findViewById(R.id.my_trip_list_view_date_time);
            holder.place_images = (ImageView) vi.findViewById(R.id.my_trip_list_view_Image_view);

            //*Note svg*//*
            holder. place_images.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
            menu_svg = SVGParser.getSVGFromResource(context.getResources(), R.raw.map_2);
            holder.place_images.setImageDrawable(menu_svg.createPictureDrawable());



            vi.setTag(holder);
        } else {
            holder = (ViewHolder) vi.getTag();
        }
  holder.setTag(crntposition);
  holder.place_images.setTag(crntposition);
        // images_view = new MyTrip_getmethod();
        String location_name = Location.get(position).toString();
        System.out.println("location_name>>>>>>>>>>>" + location_name);
        holder.place_name.setText(location_name);
        System.out.println("location_name>>>>>>>>>>>" + holder.place_name);

        holder.Day.setText(day.get(position).toString());
        System.out.println(" ### imgFile----" + image);

        holder.place_images.setImageBitmap(image.get(Integer.parseInt(imageview.getTag().toString())));`


        System.out.println("location_name>>im>>>>>>>>>>>" + holder.place_images);

        notifyDataSetChanged();

    } catch (Exception e) {
        e.printStackTrace();
    }
    return vi;
} 





and use like `holder.place_images.setImageBitmap(image.get(Integer.parseInt(holder.place_images.getTag().toString())));`