我想在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;
}
}
答案 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。但是我不明白为什么。太奇怪了。