[英]RecyclerView shows only one item at first then only three
我正在把頭發扯開,我幾乎是大膽的! 我正在使用Recyclerview顯示列表,每個項目都是一個Viewpager,因為我需要每個項目都在每個項目的信息片段之間滑動。 問題是,在加載片段時,僅加載了一項,但是我可以滾動到底部,當我回到頂部時,僅顯示三項。 我完全迷路了!
這是我的代碼! :)
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
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
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;
}
}
如果您想查看奇怪的結果:就是這里!
加載時有一項
如果我向下滾動並向上移動,則有三個...
更新:看來問題僅來自於ViewPager。 viewpager並不總是加載,而是加載一個或僅加載三個。
想法?
我有一種預感,您的布局fragment_intervention_map_fragment父級布局中的高度設置為與父級匹配。
正確的實現方式是將父布局中的高度設置為wrap_content
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.