【问题标题】:how to avoid duplicate images added in the listview如何避免在列表视图中添加重复图像
【发布时间】:2015-04-02 07:05:26
【问题描述】:

我正在做一个应用程序在列表视图中加载当前拍摄的图像,我能够在列表视图中加载图像,但问题是图像在 3 个项目之后在列表中重复查看,然后一些视图并且在imageview中。但是我需要在用户拍摄时将图像添加到列表中,请提前帮助我。 @覆盖 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;
}

【问题讨论】:

标签: android image android-listview


【解决方案1】:

这是列表视图回收问题的问题。使用适配器类的 getview 方法的位置参数来避免为您的图像视图设置此 settag。

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())));`

【讨论】:

  • 我正在使用图像视图的位图
  • 你是从数组中得到的吗,请发布你的代码,以便有人可以在这里帮助你......
  • adapter = new MyTrip_listview_Adapter(MyTrip.this, location, Date_Array,imagesview, j, context, arrayplaces); listViewplace.setAdapter(适配器);以上是适配器,这里我已经在这个位置清除了每 5 分钟查看一次服务 holder.place_images.setImageBitmap(image.get(position));
  • @hari 检查我的编辑尝试在您的问题中发布您的代码。
  • 我已经在我的适配器类中给出了我的 getview 方法
猜你喜欢
  • 1970-01-01
  • 2016-07-01
  • 2013-10-06
  • 2015-03-28
  • 1970-01-01
  • 1970-01-01
  • 2013-09-22
  • 2019-10-05
  • 1970-01-01
相关资源
最近更新 更多