0

當我使用簡單的imageview或AspectRatioImageView我能夠加載從服務器獲取的圖像。但是,如果我使用TouchImageView或GestureImageView,則無法加載圖像。我看到一個空白的屏幕。PagerAdapter與TouchImageView或GestureImageView不加載圖像

除了使用UIL之外,我嘗試了一些加載圖像的其他方法,但結果相同。

然而,當我在viewpager打開了一個視圖和它沒有顯示image..then如果我再次切換到橫向模式,然後到肖像模式,那麼它能夠裝載image..If我打電話notifyDataSetChanged()內部適配器任何地方崩潰表示InflateException

XML

<com.polites.android.GestureImageView 
     android:id="@+id/imagefullscreen" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_centerVertical="true" 
     android:layout_gravity="center"/> 

活動

pager.setAdapter(imagePagerAdapter = new ImagePagerAdapter(ImagePagerActivity.this, posts)); 
pager.setCurrentItem(pos); 
PageListener pageListener = new PageListener(); 
pager.setOnPageChangeListener(pageListener); 

imagePagerAdapter.notifyDataSetChanged(); 

適配器

public ImagePagerAdapter(Activity activity, 
         List<Post> object) { 
    this._activity = activity; 
    posts = object; 

    inflater = (LayoutInflater) _activity 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    options = new DisplayImageOptions.Builder() 
      .showImageOnLoading(android.R.color.transparent) 
      .showImageForEmptyUri(android.R.color.transparent) 
      .showImageOnFail(android.R.color.transparent) 
      .cacheInMemory(true) 
      .cacheOnDisk(true) 
      .considerExifParams(true) 
      .bitmapConfig(Bitmap.Config.RGB_565) 
      .build(); 
    imageLoader = ImageLoader.getInstance(); 
    imageLoader.init(ImageLoaderConfiguration.createDefault(_activity)); 

} 

@Override 
public int getCount() { 
    return posts.size(); 
} 

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

@Override 
public Object instantiateItem(ViewGroup container, final int position) { 
    final Post post = posts.get(position); 
    View viewLayout = inflater.inflate(R.layout.item_pager_image, container, 
      false); 
    visualizerView = (VisualizerView) viewLayout.findViewById(R.id.visualizerView); 


    image = (GestureImageView) viewLayout.findViewById(R.id.imagefullscreen); 
    mGDescription = (TextView) viewLayout.findViewById(R.id.guggu_pager_description); 
    image.setVisibility(View.VISIBLE); 

    mGDescription.setVisibility(View.VISIBLE); 

    play = (ImageView) viewLayout.findViewById(R.id.play); 
    pause = (ImageView) viewLayout.findViewById(R.id.pause); 
imageLoader.displayImage(url,images, options); 
     pause.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       //TODO:pausing audio/video here 
      } 
     }); 
    } 
    container.addView(viewLayout); 
    viewLayout.setTag("my" + position); 
    return viewLayout; 
} 

@Override 
public void destroyItem(ViewGroup container, int position, Object object) { 
    container.removeView((View) object); 
} 

@Override 
public int getItemPosition(Object object) { 
    return POSITION_NONE; 
} 

回答

0

問題是因爲TouchImageView or GestureImageView花費時間從服務器加載圖像,並且在加載圖像後視圖未更新。

我added-

private class PageListener extends ViewPager.SimpleOnPageChangeListener 
    { 
     public void onPageSelected(int position) 
     { 


      imagePagerAdapter.notifyDataSetChanged(); 
     } 
    } 

活性類的內部,使得更新視圖每當用戶滑動到新page.But與此,我被打開仍然表示blank..so我添加

第一視圖
h.postDelayed(r=new Runnable() 
    { 
     @Override 
     public void run() { 
      if (mPosition == position) 
      { 
       notifyDataSetChanged(); 
       h.removeCallbacks(r); 


      } 
     } 
    }, 1000); 

裏面instantiateItem適配器,以便第一個視圖更新1秒後創建視圖時,由該時間圖像從服務器獲取。 mPosition是正在打開的第一個視圖的位置。

這完全解決了我的問題。