ViewPager 在滑动视图时卡住

ViewPager stucks while swiping views

我创建了一个 viewpager tabslayout.Each viewpager 的视图由内部的 recyclerview 组成 fragment.The 我遇到的问题是,当我滑动浏览视图时,它卡住了,同时滑动的方式是这样的视图没有变化,我必须多次滑动才能改变 view.It 看起来 viewpager.However 没有检测到滑动事件遇到这样的问题,刷卡又流畅又快速。

 PlanListAdapter mAdapter = new PlanListAdapter(browsePlanModelList, getActivity());
 rvBrowsePlanList.setAdapter(mAdapter);

我哪里出错了,我该如何解决?

下面是fragment和adapter的代码-

public class FullTimeFragment extends Fragment {



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_browse_plan_list, container, false);

        ArrayList<BrowsePlanModel> browsePlanModelList = (ArrayList<BrowsePlanModel>) getArguments().getSerializable(AppConstant.BROWSEPLANlIST);

        RecyclerView rvBrowsePlanList = (RecyclerView) view.findViewById(R.id.rvBrowsePlanList);
        //rvBrowsePlanList.addItemDecoration(new SimpleDividerIncludingLastItemDecoration(getResources()));
        RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
        rvBrowsePlanList.setLayoutManager(mLayoutManager);
        rvBrowsePlanList.setItemAnimator(new DefaultItemAnimator());

        if(browsePlanModelList!=null)
        {
            BrowsePlanListAdapter mAdapter = new BrowsePlanListAdapter(browsePlanModelList, getActivity());
            rvBrowsePlanList.setAdapter(mAdapter);
        }

        return view;
    }
}

适配器

public class PlanListAdapter extends RecyclerView.Adapter<PlanListAdapter.MyViewHolder> {


    private List<BrowsePlanModel> planList;
    Context mContext;

    public PlanListAdapter(List<BrowsePlanModel> planList, Context mContext) {
        this.mContext = mContext;
        this.planList = planList;
    }

    @Override
    public PlanListAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.sffs_item, parent, false);

        return new MyViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(PlanListAdapter.MyViewHolder holder, int position) {


        holder.xyz.setText(planList.get(position).getxyx());
        holder.abc.setText(planList.get(position).getabc());
    }

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

    public class MyViewHolder extends RecyclerView.ViewHolder {
        public TextView xyz, abc;


        public MyViewHolder(View itemView) {
            super(itemView);

            xyz = (TextView) itemView.findViewById(R.id.xyz);
            abc = (TextView) itemView.findViewById(R.id.abc);

        }
    }
}

这可能是由于高分辨率图像导致的。如果您使用高分辨率图像,那么 viewPager 将在滑动时卡住。尝试使用低分辨率图像。

使用

myViewPager.setOffscreenPageLimit(number of pages in your viewpager minus 1);

如果不这样做,当前不可见的页面将被销毁,并在每次滑动时重新创建。如果每个页面都从数据库等填充 RecyclerView,这将导致巨大的延迟。