2017-11-14 2 views
0

Aktualisierung Ich habe einen Imageview innerhalb Pager Ansicht, wenn der Benutzer ein Bild auswählen, obwohl Galerie I letztes Bild im Hinblick auf Pager an erster Stelle angezeigt werden muß, aber seine viewpager nicht mit dem letzten Bild zu aktualisieren. mein Code:viewpager mit pagerAdapter nicht seinen Ansichten

public static class CustomPagerAdapter extends PagerAdapter { 

    Context mContext; 
    LayoutInflater mLayoutInflater; 
    Bitmap newBitmapUploadedImage = null; 

    public CustomPagerAdapter(Context context) { 
     mContext = context; 
     mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    public CustomPagerAdapter(Context context, Bitmap newUploadedImage) { 
     mContext = context; 
     newBitmapUploadedImage = newUploadedImage; 
     mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public int getCount() { 
     int swapPicSize = 0; 
     if (newBitmapUploadedImage == null) { 
      swapPicSize = Singleton.galleryPicsData.size(); 
     } else { 
      swapPicSize = Singleton.galleryPicsData.size() + 1; 
     } 

     return swapPicSize; 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view == ((LinearLayout) object); 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 

     View itemView = mLayoutInflater.inflate(R.layout.view_pager_item, container, false); 

     ImageView imageView = (ImageView) itemView.findViewById(iv_user_pics); 
     // imageView.setImageResource(profileViewPagerPics[position]); 
     /* DisplayMetrics metrics = new DisplayMetrics(); 
     getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics); 
     android.widget.LinearLayout.LayoutParams params = (android.widget.LinearLayout.LayoutParams) imageView.getLayoutParams(); 
     params.width = metrics.widthPixels; 
     params.leftMargin = 0; 
     imageView.setLayoutParams(params); 
     getActivity().getWindow().setFormat(PixelFormat.TRANSPARENT);*/ 
     if (Singleton.galleryPicsData.size() == 0) { 
      if (Singleton.getUserProfileInfoModel().getGender()) { 
       imageView.setImageDrawable(mContext.getResources().getDrawable(R.drawable.male_user_profile_photo)); 
      } else { 
       imageView.setImageDrawable(mContext.getResources().getDrawable(R.drawable.female_user_profile_photo)); 

      } 

     } 
     if (newBitmapUploadedImage != null) { 
      imageView.setImageBitmap(newBitmapUploadedImage); 
     } else { 
      GalleryPics gallery_pics = Singleton.galleryPicsData.get(position); 
      Picasso.with(mContext).load(ServerUtilities.BASE_IMAGE_URL + gallery_pics.getPicPath()).into(imageView); 
      Log.d("user_galler_pic_img_url", "" + ServerUtilities.BASE_IMAGE_URL + Singleton.galleryPicsData.get(position).getPicPath()); 
      userProfilePicsProgressBar.setVisibility(View.GONE); 
      itemView.setTag(gallery_pics); 
      container.addView(itemView); 
      notifyDataSetChanged(); 
     } 
     return itemView; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 

     container.removeView((LinearLayout) object); 
    } 



    @Override 
    public int getItemPosition(Object object) { 
     GalleryPics galleryPic = (GalleryPics) ((View) object).getTag(); 
     int position = Singleton.galleryPicsData.indexOf(galleryPic); 
     if (position >= 0) { 
      // The current data matches the data in this active fragment, so let it be as it is. 
      return position; 
     } else { 
      // Returning POSITION_NONE means the current data does not matches the data this fragment is showing right now. Returning POSITION_NONE constant will force the fragment to redraw its view layout all over again and show new data. 
      return POSITION_NONE; 
     } 
    } 
} 

ich oben Code versucht, aber nichts, noch Iam altes Bild bekommen, kann mir vorschlagen, wie dieses viewpager

Antwort

0

aktualisieren Wenn Sie Ihre Bild-URL zu sehen, aktualisieren Sie jedes Mal, wenn neue Image, der Server würde die gleiche URL (ohne Änderungen) zur Verfügung stellen, aber es kann anders sein.Das bedeutet, zuerst ein Bild hochladen und erste Bild-URL nächsten Upload zweiten Bild und dann zweite URL erhalten, vergleichen Sie einfach beide URLs. Wenn beide gleich sind, aktualisiert Picasso es nicht, stattdessen bleibt es ruhig. Wenn Sie die native Methode verwenden, die Bitmap lädt und es in ImageView anzeigt, wird es definitiv aktualisiert.

Verwandte Themen