当我上下滚动RecyclerView时,Viewpager图像消失了

时间:2019-11-18 11:55:57

标签: android android-recyclerview retrofit

我想在RecyclerView内使用ViewPager(用于instagram之类的多个图像)。但是当我上下滚动RecyclerView时,图像消失了。我认为我的问题是在onBindViewHolder方法内创建一个新的适配器。如何在ViewPagerAdapter中一次创建适配器?有解决方案吗?

public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, final int position) {

    switch (holder.getItemViewType()){


        case 1:
        {
            final ViewHolderMultiple viewHolderMultiple=(ViewHolderMultiple)holder;

            viewHolderMultiple.user_name.setText(list.get(position).getUsername());


            Call<List<DetailPojo>> call = restApiClass.getImages(list.get(position).getId());
            call.enqueue(new Callback<List<DetailPojo>>() {
                @Override
                public void onResponse(Call<List<DetailPojo>> call, Response<List<DetailPojo>> response) {

                    if (response.isSuccessful()) {

                        if (response.body() != null) {

                            imagesList = response.body();
                            postSliderAdapter = new PostSliderAdapter(imagesList, context); //I think my problem is here
                            viewHolderMultiple.postsCircleIndicator.setViewPager(viewHolderMultiple.postsViewPager);

                            Log.i("imageList",imagesList.size()+"");

                        }

                    }

                }
                @Override
                public void onFailure(Call<List<LessonPostImagesDetailPojo>> call, Throwable t) {

                    Toast.makeText(context, "Connection Error", Toast.LENGTH_SHORT).show();
                }
            });

        }
        break;
        default: break;
    }

}

3 个答案:

答案 0 :(得分:0)

您好,@ Mehmet Pls使用此方法。。 rv.getRecycledViewPool()。setMaxRecycledViews(0,0); 。这可能会有所帮助。有关方法说明,请参见this链接。

答案 1 :(得分:0)

在onbindviewholder中的所有不调用api中的第一个会在活动中创建一个单独的Api调用函数,在bindviewholder中创建该函数,例如: (((MainActivity)context).funGetData();在调用api之前,请检查您的arraylist是否不为空,然后调用api,否则显示先前加载的arraylist中的数据。 在您的主要活动中将getdata公开,并按照onsuccess方法将适配器设置为viewpager。用onbindview持有人中的if条件替换开关,别忘了写它的else部分。完成这些更改后,请通知我。

答案 2 :(得分:0)

我将ViewPager的高度从wrap_content更改为hardcode(400dp),并且可以工作。我试图根据图像大小动态更改ViewPager的高度,所以我的ViewPager大小为wrap_content。所以问题是wrap_content。但是我不明白为什么。太奇怪了。