0

В моем приложении я хотел иметь ViewPager как строку RecyclerView. Это то, что я сделал, но выход не нужен. Когда я просматриваю список, ViewPager показывает неверные данные.ViewPager внутри recyclerview не работает должным образом

RecyclerView Код

private Context context; 
    private List<ViewPagerModel> listVP; 
    private HashMap<Integer, List<ViewPagerModel>> hmList; 
    private FragmentActivity fragmentActivity; 
    private ViewPagerAdapter viewPagerAdapter; 


    public ListViewPagerAdapter(Context context, HashMap<Integer, List<ViewPagerModel>> hmList, FragmentActivity fragmentActivity) { 
     this.context = context; 
     this.hmList = hmList; 
     this.fragmentActivity = fragmentActivity; 
    } 

    @Override 
    public LVPHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = LayoutInflater.from(context).inflate(R.layout.custom_list_with_viewpager_row, parent, false); 
     LVPHolder holder = new LVPHolder(view); 
     return holder; 
    } 

    @Override 
    public void onBindViewHolder(LVPHolder holder, int position) { 

     listVP = hmList.get(position); 
     viewPagerAdapter = new ViewPagerAdapter((fragmentActivity).getSupportFragmentManager(), context, listVP); 
     holder.viewPager.setAdapter(viewPagerAdapter); 
     holder.circleIndicator.setViewPager(holder.viewPager); 


    } 

    @Override 
    public int getItemCount() { 
     return 10; 
    } 

    public class LVPHolder extends RecyclerView.ViewHolder { 

     private ViewPager viewPager=null; 
     private CircleIndicator circleIndicator; 

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

      viewPager = (ViewPager) itemView.findViewById(R.id.pager); 
      viewPager.setAdapter(null); 
      circleIndicator = (CircleIndicator) itemView.findViewById(R.id.indicator_custom); 
     } 
    } 

ViewPager Код

public class ViewPagerAdapter extends FragmentStatePagerAdapter { 

    private Context context; 
    private List<ViewPagerModel> listVP; 

    public ViewPagerAdapter(FragmentManager fm, Context context, List<ViewPagerModel> listVP) { 
     super(fm); 
     this.context = context; 
     this.listVP = listVP; 
    } 


    @Override 
    public Fragment getItem(int position) { 


     Fragment fragment = VPFragment.newInstance(position); 
     return fragment; 
    } 

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

XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="200dp" /> 

    <me.relex.circleindicator.CircleIndicator 
     android:id="@+id/indicator_custom" 
     android:layout_width="fill_parent" 
     android:layout_height="40dp" 
     android:layout_alignBottom="@+id/pager" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     app:ci_animator="@animator/indicator_animator" 
     app:ci_animator_reverse="@animator/indicator_animator_reverse" 
     app:ci_drawable="@drawable/black_radius_square" 
     app:ci_height="4dp" 
     app:ci_margin="6dp" 
     app:ci_width="10dp" /> 


</RelativeLayout> 

ответ

0

Не объявляйте listVP и viewPagerAdapter в качестве переменной класса.

Снимите:

private List<ViewPagerModel> listVP; 
private ViewPagerAdapter viewPagerAdapter; 

И изменить свой код так:

@Override 
    public void onBindViewHolder(LVPHolder holder, int position) { 

     List<ViewPagerModel> listVP = hmList.get(position); 
     ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter((fragmentActivity).getSupportFragmentManager(), context, listVP); 
     holder.viewPager.setAdapter(viewPagerAdapter); 
     holder.circleIndicator.setViewPager(holder.viewPager);  
    } 
+0

извините, но как может у взять ViewPager адаптер в HashMap –

+0

я пытался, но все еще –

+0

Что вы имеете в виду под «* выход не нужен * "? можете ли вы опубликовать скриншот для своей проблемы? – Rami

Смежные вопросы