2015-04-02 100 views
0

我正在做一个应用程序加载列表视图中的当前拍摄的图像,我能够在列表视图中加载图像,但问题是图像在列表中反复查看之后3个项目和一些tine它的视图然后在那里imageview.but我的需要是添加图像在列表中时,用户拿走了,请提前帮助我。 @Override public View getView(int position,View convertview,ViewGroup parent){ View 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; 
} 
+0

您可以参考下面这个链接 [http://stackoverflow.com/questions/15412767/images-are-repeating-in-listview][1] – Minp 2015-04-02 07:11:03

+0

这个例子中是如此的复杂,请帮我 – hari 2015-04-02 07:36:58

回答

1

这与ListView的回收问题issue.tO避免这种settag与您的适配器类的getview方法的位置参数的ImageView的。

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

我正在使用imageview的位图 – hari 2015-04-02 07:31:10

+0

你是否从数组中获得该数据请发布你的代码,以便有人可以在这里帮助你... – 2015-04-02 07:33:27

+0

adapter = new MyTrip_listview_Adapter(MyTrip.this,location,Date_Array,imagesview,j,context,arrayplaces ); listViewplace.setAdapter(adapter);上面是适配器,在这里我已经在这个位置decleared被查看服务每5分钟holder.place_images.setImageBitmap(image.get(position)); – hari 2015-04-02 07:54:55