I'm creating a Image Slider using Picasso + Viewpager.
I am able to swipe the slider base on the image size(counts).
But no images has been loaded tho i can swipe the screen.
What is wrong with my codes?
In my MainActivity,
I get the links of my images.
then set the adapter Like this.
viewPager = (ViewPager)findViewById(R.id.view_pager);
viewPagerAdapter = new ViewPagerAdapter(MainActivity.this,IMAGES);
viewPager.setAdapter(viewPagerAdapter);
IMAGES=Arrays of Links(For images).
My ImagePager_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp"
android:background="@drawable/plusbtn"/>
</RelativeLayout>
And here i declared my ViewPager..
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#000">
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"></android.support.v4.view.ViewPager>
</LinearLayout>
And for My Adapter..
package com.thesis.juandirection.picasso;
import android.content.Context;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.support.v4.view.ViewPager;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
/**
* Created by Galvez on 11/9/2015.
*/
public class ViewPagerAdapter extends PagerAdapter {
private Context context;
private ArrayList<String> IMAGES = new ArrayList<>();
public ViewPagerAdapter(Context context, ArrayList<String> IMAGES) {
this.IMAGES = IMAGES;
this.context = context;
}
@Override
public int getCount() {
return IMAGES.size();
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return false;
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.imagepager_layout,null);
((ViewPager) collection).addView(view);
final ImageView img = (ImageView) view.findViewById(R.id.img);
Picasso.with(context)
.load(IMAGES.get(position))
.placeholder(R.drawable.plusbtn)
.centerCrop()
.fit()
.into(img);
return view;
}
}
you should change this;
@Override
public boolean isViewFromObject(View view, Object object) {
return false;
}
to this;
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((LinearLayout) object);
}
As @cemtufekci advised, you have to change isViewFromObject
accordingly.
But it will not fix images loading problem, if you don't have appropriate
<uses-permission android:name="android.permission.INTERNET" />
permission declared in AndroidManifest.xml
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With