ViewPager + Picasso

I am creating an image slider using Picasso + Viewpager.
I can drag the slider to fit the image (number).
But the images were not uploaded so I could scroll the screen.
What is wrong with my codes?

In my MainActivity, I get links to my images.
then install the adapter.

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 so I announced 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; } } 
+5
source share
2 answers

you have to change this;

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

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

As pointed out by @cemtufekci, you should modify isViewFromObject . But the problem with downloading images will not be resolved if you do not have the corresponding <uses-permission android:name="android.permission.INTERNET" /> resolved in AndroidManifest.xml .

+1
source

Source: https://habr.com/ru/post/1235483/


All Articles