2017-09-28 34 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) –