2017-09-28 35 views
0

我有一個代碼,其中圖像將顯示在ViewPager上,並且圖像將來自服務器。我正在使用畢加索圖書館,但是當我使用畢加索時,圖像不在ViewPager上。陣列圖像具有圖像的URL,我加載的方法,請檢查我的代碼,並建議我的問題。下面是XML和Java代碼IssuePager by usng畢加索

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:padding="1dip" > 

<ImageView 
    android:id="@+id/image" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:adjustViewBounds="true" 
    android:layout_gravity="right|top" /> 

<ProgressBar android:id="@+id/progressBar" 
    android:progressDrawable="@drawable/loader_image" 
    android:layout_width="fill_parent" android:layout_height="8dip" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:indeterminateOnly="false" 
    android:max="100"> 
</ProgressBar> 

public class SlidingImage_Adapter extends PagerAdapter { 
private ArrayList<String> IMAGES; 
private LayoutInflater layoutInflater; 
private Context context; 
ProgressBar progressBar; 
private ImageLoader imageLoader; 

public SlidingImage_Adapter(Context context, ArrayList<String> IMAGES) { 
    this.context = context; 
    this.IMAGES=IMAGES; 
    for(int i=0;i<IMAGES.size();i++) 
     layoutInflater = LayoutInflater.from(context); 
} 


@Override 
public Object instantiateItem(ViewGroup view, int position) { 
    // ImageView imageLayout = (ImageView) inflater.inflate(R.layout.screen_slide_fragment, view, false); 
    layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View item_view = layoutInflater.inflate(R.layout.screen_slide_fragment, view, false); 
    ImageView imageView = (ImageView) item_view.findViewById(R.id.image); 
    Log.e("instantiateItem: ",IMAGES.get(position)); 
    Picasso.with(context) 
      .load(IMAGES.get(position)) 
      .error(R.drawable.girl) 
      .placeholder(R.drawable.loader_image) 
      .fit() 
      .centerCrop() 
      .into(imageView); 
    return item_view; 
} 

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

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


@Override 
public boolean isViewFromObject(View view, Object object) { 
    return view.equals(object); 

} 

@Override 
public void restoreState(Parcelable state, ClassLoader loader) { 
} 

@Override 
public Parcelable saveState(){ 
    return null; 
    } 
    } 
+0

爲什麼你需要這個代碼? 'for(int i = 0; i

+0

我也想在ImagesView上添加進度條,它。 – user6734679

+0

你可以分享Log.e(「instantiateItem:」,IMAGES.get(position));價值? –

回答

0

嘗試。添加view.addView(item_view);線到你的代碼

@Override 
public Object instantiateItem(ViewGroup view, int position) { 
    // ImageView imageLayout = (ImageView) inflater.inflate(R.layout.screen_slide_fragment, view, false); 
    layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View item_view = layoutInflater.inflate(R.layout.screen_slide_fragment, view, false); 
    ImageView imageView = (ImageView) item_view.findViewById(R.id.image); 
    Log.e("instantiateItem: ",IMAGES.get(position)); 
    Picasso.with(context) 
      .load(IMAGES.get(position)) 
      .error(R.drawable.girl) 
      .placeholder(R.drawable.loader_image) 
      .fit() 
      .centerCrop() 
      .into(imageView); 

    //you need to add this line 
    view.addView(item_view); 

    return item_view; 
} 

顯示下面的代碼進度使用和編譯此

compile 'com.github.bumptech.glide:glide:3.7.0'

到應用程序gradle這個文件

public class SlidingImage_Adapter extends PagerAdapter { 
private ArrayList<String> IMAGES; 
private LayoutInflater layoutInflater; 
private Context context; 
ProgressBar progressBar; 
private ImageLoader imageLoader; 

public SlidingImage_Adapter(Context context, ArrayList<String> IMAGES) { 
    this.context = context; 
    this.IMAGES=IMAGES; 
} 


@Override 
public Object instantiateItem(ViewGroup view, int position) { 
    // ImageView imageLayout = (ImageView) inflater.inflate(R.layout.screen_slide_fragment, view, false); 
    layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View item_view = layoutInflater.inflate(R.layout.screen_slide_fragment, view, false); 
    ImageView imageView = (ImageView) item_view.findViewById(R.id.image); 
    Log.e("instantiateItem: ",IMAGES.get(position)); 

    ProgressBar spinner = (ProgressBar) item_view.findViewById(R.id.progressBar); 

    //This will help to load image and show progressBar 
    imageLoader = new ImageLoader(imageView, spinner, IMAGES.get(position)); 

    //you need to add this line 
    view.addView(item_view); 

    return item_view; 
} 

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

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


@Override 
public boolean isViewFromObject(View view, Object object) { 
    return view.equals(object); 

} 

@Override 
public void restoreState(Parcelable state, ClassLoader loader) { 
} 

@Override 
public Parcelable saveState(){ 
    return null; 
    } 



    public class ImageLoader{ 

     public ImageLoader(ImageView imageView, final ProgressBar progressBar, String imagePath){ 

      Glide.with(context).load(imagePath).listener(new RequestListener<String, GlideDrawable>() { 

       @Override 
       public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { 
        //handle error 
        return false; 
       } 

       @Override 
       public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { 
        progressBar.setVisibility(View.GONE); 
        return false; 
       } 
      }).into(imageView); 
     } 
    } 

} 

xml文件代碼:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:padding="1dip" > 

    <ProgressBar 
     android:id="@+id/progressBar" 
     style="?android:attr/progressBarStyle" 
     android:max="100" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <ImageView 
     android:id="@+id/image" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:adjustViewBounds="true" 
     android:layout_gravity="right|top" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

</RelativeLayout> 
+0

Okey我用這個代碼和圖像即將到來,但圖像的某些部分正在切割,我也需要進度欄,直到圖像不會加載 – user6734679

+0

Okey我刪除了fit和centerCrop方法,並且圖像隨即顯示尺寸,但進度條未顯示 – user6734679

+0

for'progressBar'您可以[參考此鏈接](https://stackoverflow.com/questions/10006866/how-to -add-progress-bar-to-viewpager-in-android#answer-10016114) –