我有一个由相同片段组成的ViewPager RecyclerView只在ViewPager的一个片段中加载项目



当我想在RecyclerView中加载项目时,我有一个带有片段的viewPager,项目只加载在第一个片段RecyclerView中,而不加载在其他片段中,但文本视图加载在所有片段中,当我再次返回到上一个项目时,项目加载在该片段的RecyclerView

我看到了一些解决方案,我让我所有的回收器视图适配器视图不是静态的,但它再次不起作用

我用不同的名称、不同的布局名称和不同的id为其回收器制作了其他片段View,它可以工作,但我有大量片段,这不是我的解决方案(:

public class ShowInfo extends Fragment {
private static ViewPager mPager;
private static int currentPage = 0;
View view;
RecyclerView rv;
RecyclerView rv1;
ImageView lastImage;
ImageView nextImage;
TextView imageStatus;
TextView title;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.activity_item_scrolling, container, false);
String strtext = getArguments().getString("title","");
title = v.findViewById(R.id.textView);
title.setText(strtext);
return v;
}
private static final Integer[] XMEN= {R.drawable.testimage,R.drawable.slide,R.drawable.testimage,R.drawable.slide};
private ArrayList<Integer> XMENArray = new ArrayList<Integer>();
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
init();
RVAdapter_item rvAdapter = new RVAdapter_item(initializeData());
rv.setAdapter(rvAdapter);
RVAdapter1_item rvAdapter1 = new RVAdapter1_item(initializeData());
rv1.setAdapter(rvAdapter1);
imageStatus.setText(getTextString(0));
rvAdapter.notifyDataSetChanged();
rvAdapter1.notifyDataSetChanged();
}
private void init() {
LinearLayout linearLayout = getActivity().findViewById(R.id.linear);
rv = (RecyclerView) linearLayout.getChildAt(2);
imageStatus = getActivity().findViewById(R.id.imageStatus);
lastImage = getActivity().findViewById(R.id.lastImage);
nextImage = getActivity().findViewById(R.id.nextImage);
rv.setHasFixedSize(true);
rv.setLayoutManager( new GridLayoutManager(getActivity(),1));
rv1 = getActivity().findViewById(R.id.rv1);
rv1.setHasFixedSize(true);
rv1.setLayoutManager( new GridLayoutManager(getActivity(),2));
}
private ArrayList<Data> initializeData() {
ArrayList<Data> qorans = new ArrayList<>();
qorans.add(new Data("","",""));
qorans.add(new Data("","",""));
qorans.add(new Data("","",""));
qorans.add(new Data("","",""));
qorans.add(new Data("","",""));
qorans.add(new Data("","",""));
qorans.add(new Data("","",""));
qorans.add(new Data("","",""));
qorans.add(new Data("","",""));
qorans.add(new Data("","",""));
return qorans;
}
public String getTextString(int i){
if (i==0){
lastImage.setVisibility(View.INVISIBLE);
}else {
lastImage.setVisibility(View.VISIBLE);
}
if (i+1==XMENArray.size()){
nextImage.setVisibility(View.INVISIBLE);
}else {
nextImage.setVisibility(View.VISIBLE);
}
return "عکس "+" "+Integer.toString(i+1)+" "+"از"+" "+Integer.toString(XMENArray.size());
}

}

再生适配器

public class RVAdapter_item extends RecyclerView.Adapter<RVAdapter_item.QoranViewHolder> {
private SpringyAdapterAnimator mAnimator;
class QoranViewHolder extends RecyclerView.ViewHolder {
QoranViewHolder(final View itemView) {
super(itemView);
final Context context;

}
}
List<Data> qoranList;
public RVAdapter_item(List<Data> qoren){
this.qoranList = qoren;
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
mAnimator = new SpringyAdapterAnimator(recyclerView);
mAnimator.setSpringAnimationType(SpringyAdapterAnimationType.SCALE);
mAnimator.addConfig(85,15);
}
@Override
public QoranViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_info, viewGroup, false);
QoranViewHolder pvh = new QoranViewHolder(v);
mAnimator.onSpringItemCreate(v);
return pvh;
}
@Override
public void onBindViewHolder(QoranViewHolder personViewHolder, int i) {
mAnimator.onSpringItemBind(personViewHolder.itemView, i);
}
@Override
public int getItemCount() {
return  qoranList.size();
}

}

ViewPager活动

public class ShowInfoViewPager extends AppCompatActivity {
List<Fragment> fragments = new ArrayList<>();
ArrayList<Data> list;
int num = 0;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_showinfo_viewpager);
list = MainActivity.initializeData();
for (int i=0;i<list.size();i++) {
Bundle bundle = new Bundle();
bundle.putString("title", list.get(i).category_title);
ShowInfo firstFragment = new ShowInfo();
firstFragment.setArguments(bundle);
fragments.add(firstFragment);
}
ViewPager pager = (ViewPager) findViewById(R.id.pager);
ZoomOutTransformation zoomOutTransformation = new ZoomOutTransformation();
pager.setPageTransformer(true, zoomOutTransformation);
final MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);
}
private class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int pos) {
return fragments.get(pos);
}
@Override
public int getCount() {
return fragments.size();
}
}

}

将代码移到片段的"onResume:"方法。

RVAdapter_item rvAdapter = new RVAdapter_item(initializeData());
rv.setAdapter(rvAdapter);
RVAdapter1_item rvAdapter1 = new RVAdapter1_item(initializeData());
rv1.setAdapter(rvAdapter1);
imageStatus.setText(getTextString(0));
rvAdapter.notifyDataSetChanged();
rvAdapter1.notifyDataSetChanged();

最新更新