0

Ich habe einen Viewpager mit Tabslayout erstellt. Jede Ansicht von Viewpager besteht aus Recyclerview innerhalb Fragment. Das Problem, das ich habe ist, dass, wenn ich durch die Ansichten wische es beim Wischen in einer Weise, dass es ist Keine Änderung in der Ansicht und ich muss mehrmals wischen, um Ansicht zu ändern. Es sieht aus, dass Swipe-Ereignis von Viewpager nicht erkannt wird. Jedoch, wenn ich unter zwei Zeilen auskommentieren, die Einstellung Adapter enthält, dann erfahre ich kein Problem und wischen ist glatt und schnell.ViewPager bleibt beim Wischen Ansichten

Wo gehe ich falsch vor und wie kann ich das lösen?

Im Folgenden finden Sie Code-Fragment und 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; 
    } 
} 

Adapter

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); 

     } 
    } 
} 

Antwort

1

Verwenden

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

Wenn Sie dies nicht tun, werden die Seiten, die werden derzeit nicht sichtbar sind zerstört und wird jedes Mal, wenn Sie Swipe neu erstellt werden. Dies führt zu einer großen Verzögerung, wenn jede dieser Seiten einen RecyclerView aus einer Datenbank usw. auffüllt.

1

Es kann wegen hoher Auflösung Bild geschieht. Wenn Sie Bilder mit hoher Auflösung verwenden, bleibt der viewPager beim Wischen hängen. Versuchen Sie, Bilder mit niedriger Auflösung zu verwenden.

+0

Ich benutze keine images.only Textansicht in recyclerview item – Bhuvi

Verwandte Themen