简体   繁体   English

RecyclerView最初只显示一个项目,然后仅显示三个项目

[英]RecyclerView shows only one item at first then only three

I'm tearing my hair apart, I'm almost bold ! 我正在把头发扯开,我几乎是大胆的! I'm using a Recyclerview to show a list and each item is a Viewpager for i need each to swipe between information fragments for each item. 我正在使用Recyclerview显示列表,每个项目都是一个Viewpager,因为我需要每个项目都在每个项目的信息片段之间滑动。 The thing is that on loading the fragment, there is only one item loaded, but i can scroll bottom and when I come back to top, only three items are displayed. 问题是,在加载片段时,仅加载了一项,但是我可以滚动到底部,当我回到顶部时,仅显示三项。 I am completely lost ! 我完全迷路了!

Here is my code ! 这是我的代码! :) :)

ListIntervention.java ListIntervention.java

public class ListInterventionAdapter extends RecyclerView.Adapter<ListInterventionAdapter.ViewHolder> {

private final List<Intervention> mValues;
private FragmentManager mFragment;


public ListInterventionAdapter(FragmentManager context, List<Intervention> items) {
    mValues = items;
    mFragment = context;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.fragment_intervention, parent, false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
    Intervention intervention = mValues.get(position);
    holder.viewPager.setAdapter(new InterventionItemAdapter(mFragment, intervention));
}

@Override
public int getItemCount() {
    return mValues.size();
}


public class ViewHolder extends RecyclerView.ViewHolder {
    public final View mView;
    public Intervention mItem;
    public ViewPager viewPager;

    public ViewHolder(View view) {
        super(view);
        mView = view;
        viewPager = view.findViewById(R.id.fragment_intervention_item);
        return;
    }
}
}

InterventionItemAdapter.java InterventionItemAdapter.java

public class InterventionItemAdapter extends FragmentStatePagerAdapter {

private Intervention mIntervention;

public InterventionItemAdapter(FragmentManager fragmentManager, Intervention intervention) {
    super(fragmentManager);
    mIntervention = intervention;
    return;
}


@Override
public Fragment getItem(int i) {
    Fragment interventionFragment;
    switch (i) {
        case 0:
            interventionFragment = InterventionMapFragment.newInstance(mIntervention.getId());
            break;
        case 1:
            interventionFragment = InterventionInfoFragment.newInstance(i);
            break;
        case 2:
            interventionFragment = InterventionBlocNote.newInstance(i);
            break;
        default:
            interventionFragment = InterventionMapFragment.newInstance(i);
            break;
    }
    return interventionFragment;
}

@Override
public int getCount() {
    return 1;
}
 }

InterventionMapFragment.java InterventionMapFragment.java

public class InterventionMapFragment extends Fragment {

private View currentView;
private Integer interventionId;

public InterventionMapFragment() {
}


@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    currentView = inflater.inflate(R.layout.fragment_intervention_map_fragment, container, false);
    return currentView;
}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    TextView text = currentView.findViewById(R.id.fragment_intervention_map);
    text.setText("MAP " + Integer.toString(this.getArguments().getInt("pos")));
    return;
}

public static InterventionMapFragment newInstance(Integer i) {

    Bundle args = new Bundle();
    args.putInt("pos", i);
    InterventionMapFragment fragment = new InterventionMapFragment();
    fragment.setArguments(args);
    return fragment;
}
}

If you want to see the weird results : Here it is ! 如果您想查看奇怪的结果:就是这里!

On load, there is one item 加载时有一项

And if I scroll bottom and go up there are three... 如果我向下滚动并向上移动,则有三个...

在此处输入图片说明

UPDATE : It appears that the problem comes from the ViewPager called only. 更新:看来问题仅来自于ViewPager。 The viewpager does not always load, it loads either one or only three. viewpager并不总是加载,而是加载一个或仅加载三个。

Ideas ? 想法?

I have a hunch that your layout fragment_intervention_map_fragment the height in your parent layout is set to match parent. 我有一种预感,您的布局fragment_intervention_map_fragment父级布局中的高度设置为与父级匹配。

the correct implementation is set your height in your parent layout to wrap_content 正确的实现方式是将父布局中的高度设置为wrap_content

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM