-
Notifications
You must be signed in to change notification settings - Fork 238
Open
Description
I am getting this exception
java.lang.StackOverflowError
at com.lykehq.ui.home.teasers.BannersAdapter.getCount(BannersAdapter.java:69)
at com.lykehq.views.loopviewpager.LoopPagerAdapterWrapper.getRealCount(LoopPagerAdapterWrapper.java:102)
at com.lykehq.views.loopviewpager.LoopPagerAdapterWrapper.toRealPosition(LoopPagerAdapterWrapper.java:69)
at com.lykehq.views.loopviewpager.LoopViewPager$1.onPageScrolled(LoopViewPager.java:151)
at android.support.v4.view.ViewPager.dispatchOnPageScrolled(ViewPager.java:1769)
at android.support.v4.view.ViewPager.onPageScrolled(ViewPager.java:1748)
at android.support.v4.view.ViewPager.pageScrolled(ViewPager.java:1670)
at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:576)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:552)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:513)
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:505)
at com.lykehq.views.loopviewpager.LoopViewPager.setCurrentItem(LoopViewPager.java:101)
at com.lykehq.views.loopviewpager.LoopViewPager$1.onPageScrolled(LoopViewPager.java:156)
at android.support.v4.view.ViewPager.dispatchOnPageScrolled(ViewPager.java:1769)
at android.support.v4.view.ViewPager.onPageScrolled(ViewPager.java:1748)
at android.support.v4.view.ViewPager.pageScrolled(ViewPager.java:1670)
at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:576)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:552)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:513)
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:505)
at com.lykehq.views.loopviewpager.LoopViewPager.setCurrentItem(LoopViewPager.java:101)
at com.lykehq.views.loopviewpager.LoopViewPager$1.onPageScrolled(LoopViewPager.java:156)
at android.support.v4.view.ViewPager.dispatchOnPageScrolled(ViewPager.java:1769)
at android.support.v4.view.ViewPager.onPageScrolled(ViewPager.java:1748)
at android.support.v4.view.ViewPager.pageScrolled(ViewPager.java:1670)
at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:576)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:552)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:513)
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:505)
at com.lykehq.views.loopviewpager.LoopViewPager.setCurrentItem(LoopViewPager.java:101)
at com.lykehq.views.loopviewpager.LoopViewPager$1.onPageScrolled(LoopViewPager.java:156)
at android.support.v4.view.ViewPager.dispatchOnPageScrolled(ViewPager.java:1769)
at android.support.v4.view.ViewPager.onPageScrolled(ViewPager.java:1748)
at android.support.v4.view.ViewPager.pageScrolled(ViewPager.java:1670)
at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:576)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:552)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:513)
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:505)
at com.lykehq.views.loopviewpager.LoopViewPager.setCurrentItem(LoopViewPager.java:101)
at com.lykehq.views.loopviewpager.LoopViewPager$1.onPageScrolled(LoopViewPager.java:156)
at android.support.v4.view.ViewPager.dispatchOnPageScrolled(ViewPager.java:1769)
at android.support.v4.view.ViewPager.onPageScrolled(ViewPager.java:1748)
at android.support.v4.view.ViewPager.pageScrolled(ViewPager.java:1670)
at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:576)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:552)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:513)
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:505)
at com.lykehq.views.loopviewpager.LoopViewPager.setCurrentItem(LoopViewPager.java:101)
at com.lykehq.views.loopviewpager.LoopViewPager$1.onPageScrolled(LoopViewPager.java:156)
The LoopViewPager is the first element inside a RecyclerView which is inside a Fragment which is inside a ViewPager along with other 3 Fragment.
So when my Activity starts, I make a request to my backend, while I am waiting I swipe around the 4 fragments and then suddenly the app crashes. This doesn't happen always unfortunately.
If I use a normal ViewPager everything looks fine.
Here is my adapter
public class BannersAdapter extends PagerAdapter {
private Context context;
private List<Teaser> teasers;
private AdapterListener listener;
public BannersAdapter(@NonNull Context context, @NonNull AdapterListener listener) {
this.context = context;
this.listener = listener;
}
public void setTeasers(@NonNull List<Teaser> teasers) {
this.teasers = teasers;
notifyDataSetChanged();
}
@Override
public Object instantiateItem(ViewGroup collection, final int position) {
ImageView imageView = new ImageView(context);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Teaser teaser = (Teaser) view.getTag(R.id.view_holder_tag);
listener.onTeaserClick(teaser);
}
});
collection.addView(imageView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
Teaser teaser = teasers.get(position);
imageView.setTag(R.id.view_holder_tag, teaser);
int width = DisplayUtils.getDisplaySize(context)[0];
String imageUrl = teaser.getImage().getUrl(width);
Glide.with(context).load(imageUrl).into(imageView);
return imageView;
}
@Override
public void destroyItem(ViewGroup collection, int position, Object view) {
collection.removeView((View) view);
}
@Override
public int getCount() {
if (teasers == null) {
return 0;
}
LogUtils.d("TEST", String.valueOf(teasers.size()));
return teasers.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
public interface AdapterListener {
void onTeaserClick(@NonNull Teaser teaser);
}
I am also using the page indicator from Jake Wharton:
bannersAdapter = new BannersAdapter(context, this);
bannersViewPager.setAdapter(bannersAdapter);
pageIndicator.setViewPager(bannersViewPager);
Metadata
Metadata
Assignees
Labels
No labels