2015-04-02 94 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