0

J'ai créé une tabview avec quatre onglets et utilisé un viewpager dans cet onglet. Dans le pager de la vue, j'ai défini recyclerview. J'ai donné cinq liste d'articles à chaque recylerview initialement chaque recyclerview montre 5 articles mais en remplaçant ces articles deviennent doubles.Augmentation des éléments de Recyclerview lors de la permutation de l'affichage du pager dans l'onglet

Ma principale activité java

public class WorldMAp extends AppCompatActivity { 
private TabLayout tabLayout; 
private ViewPager viewPager; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.worldmap_activity); 

    viewPager = (ViewPager) findViewById(R.id.viewpager); 
    setupViewPager(viewPager); 

    tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 

} 
private void setupTabIcons() { 
    tabLayout.getTabAt(0).setIcon(R.drawable.iconmap); 
    tabLayout.getTabAt(1).setIcon(R.drawable.iconmap); 
    tabLayout.getTabAt(2).setIcon(R.drawable.iconmap); 
} 
private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new Tab1Fragment(), "Countries"); 
    adapter.addFragment(new Tab2Fragment(), "RIVERS"); 
    adapter.addFragment(new Tab3Fragment(), "PEAKS"); 
    adapter.addFragment(new Tab4Fragment(), "WONDERS"); 
    viewPager.setAdapter(adapter); 
} 
class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

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

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 
} 

adaptateur vue recycleur

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

private List<Country> countryList; 

public class MyViewHolder extends RecyclerView.ViewHolder { 
    public TextView title, genre; 
    public ImageView imageView; 

    public MyViewHolder(View view) { 
     super(view); 
     title = (TextView) view.findViewById(R.id.title); 
     genre = (TextView) view.findViewById(R.id.genre); 
     imageView=(ImageView)view.findViewById(R.id.image); 

    } 
} 


public Country_Adapter(List<Country> countryList) { 
    this.countryList = countryList; 
} 

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

    return new MyViewHolder(itemView); 
} 

@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
    Country movie = countryList.get(position); 
    holder.title.setText(movie.getTitle()); 
    holder.genre.setText(movie.getGenre()); 
    holder.imageView.setBackgroundResource(R.drawable.share); 
} 

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

Onglet Voir

private List<Country> countryList = new ArrayList<>(); 
private RecyclerView recyclerView; 
private Country_Adapter mAdapter; 
ImageView imageView; 
@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.tab1_fragment,container,false); 

    recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view); 

    mAdapter = new Country_Adapter(countryList); 
    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity()); 
    recyclerView.setLayoutManager(mLayoutManager); 
    recyclerView.setItemAnimator(new DefaultItemAnimator()); 
    recyclerView.setAdapter(mAdapter); 
    prepareMovieData(); 
return view; 
} 
private void prepareMovieData() { 
    Country country = new Country("Mad Max: Fury Road", "Action & Adventure"); 
    countryList.add(country); 

    Country country1 = new Country("Mad Max: Fury Road", "Action & Adventure"); 
    countryList.add(country1); 
    Country country2 = new Country("Mad Max: Fury Road", "Action & Adventure"); 
    countryList.add(country2); 
    Country country3 = new Country("Mad Max: Fury Road", "Action & Adventure"); 
    countryList.add(country3); 
    Country country4 = new Country("Mad Max: Fury Road", "Action & Adventure"); 
    countryList.add(country4); 


} 

comment empêcher de ces articles de plus en plus auto?

Répondre

0

Par défaut, ViewPage peut contenir 2 fragments et vous en utilisez 4, après être passé à 4 si vous revenez à 1 si vous appelez onCréer le 1er fragment et vice versa. pour éviter cette utilisation

 mViewPager.setOffscreenPageLimit(4); 

setOffscreenPageLimit conservera tout fragment 4 dans la pile et évite les loisirs.

+0

Merci mon frère fonctionne parfaitement :). –