Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在选项卡视图中交换视图寻呼机时增加Recyclerview的项目_Java_Android_Android Recyclerview_Android Viewpager_Tabview - Fatal编程技术网

Java 在选项卡视图中交换视图寻呼机时增加Recyclerview的项目

Java 在选项卡视图中交换视图寻呼机时增加Recyclerview的项目,java,android,android-recyclerview,android-viewpager,tabview,Java,Android,Android Recyclerview,Android Viewpager,Tabview,我创建了一个包含四个选项卡的选项卡视图,并在此选项卡视图中使用了一个viewpager。在viewpager中,我设置了recyclerview。我给每个recylerview提供了5个项目列表,最初每个recyclerview显示5个项目,但在交换回这些项目后,这些项目会加倍 我的主要java活动 public class WorldMAp extends AppCompatActivity { private TabLayout tabLayout; private ViewPager vi

我创建了一个包含四个选项卡的选项卡视图,并在此选项卡视图中使用了一个viewpager。在viewpager中,我设置了recyclerview。我给每个recylerview提供了5个项目列表,最初每个recyclerview显示5个项目,但在交换回这些项目后,这些项目会加倍

我的主要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);
    }
}
}
公共类WorldMAp扩展了AppCompative活动{
私人摊位摊位;
私人视页机视页机;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.worldmap_活动);
viewPager=(viewPager)findViewById(R.id.viewPager);
设置viewPager(viewPager);
tabLayout=(tabLayout)findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
}
私有void setupTabIcons(){
tabLayout.getTabAt(0).setIcon(R.drawable.iconmap);
tabLayout.getTabAt(1).setIcon(R.drawable.iconmap);
tabLayout.getTabAt(2).setIcon(R.drawable.iconmap);
}
专用无效设置ViewPager(ViewPager ViewPager){
ViewPagerAdapter适配器=新的ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(新的Tab1Fragment(),“Countries”);
addFragment(新的Tab2Fragment(),“RIVERS”);
addFragment(新的Tab3Fragment(),“PEAKS”);
addFragment(新的Tab4Fragment(),“奇迹”);
viewPager.setAdapter(适配器);
}
类ViewPagerAdapter扩展了FragmentPagerAdapter{
私有最终列表MFFragmentList=new ArrayList();
私有最终列表MFFragmentTitleList=new ArrayList();
公共视图页面编辑器(碎片管理器){
高级经理;
}
@凌驾
公共片段getItem(int位置){
返回MFFragmentList.get(位置);
}
@凌驾
public int getCount(){
返回4;
}
public void addFragment(片段片段,字符串标题){
添加(片段);
MFFragmentTitleList.add(标题);
}
@凌驾
公共字符序列getPageTitle(int位置){
返回MFFragmentTitleList.get(位置);
}
}
}
回收器视图适配器

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();
}
}
公共类国家/地区\u适配器扩展
RecyclerView.适配器{
私人名单国家名单;
公共类MyViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图标题、体裁;
公共影像视图;
公共MyViewHolder(视图){
超级(视图);
title=(TextView)view.findViewById(R.id.title);
genre=(TextView)view.findViewById(R.id.genre);
imageView=(imageView)view.findViewById(R.id.image);
}
}
公共国家/地区适配器(列表国家/地区列表){
this.countryList=countryList;
}
@凌驾
公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType){
View itemView=LayoutInflater.from(parent.getContext())
.充气(R.layout.country_列表,父项,假);
返回新的MyViewHolder(itemView);
}
@凌驾
公共无效onBindViewHolder(MyViewHolder,int位置){
国家电影=国家列表。获取(位置);
holder.title.setText(movie.getTitle());
holder.genre.setText(movie.getGenre());
持有者.imageView.setBackgroundResource(R.drawable.share);
}
@凌驾
public int getItemCount(){
返回countryList.size();
}
}
选项卡视图

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


}
private List countryList=new ArrayList();
私人回收站;
私营国家/地区;
图像视图图像视图;
@可空
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState){
视图=充气机。充气(右布局。选项卡1_碎片,容器,错误);
recyclerView=(recyclerView)视图.findViewById(R.id.recycler\u视图);
mAdapter=新的国家/地区适配器(国家/地区列表);
RecyclerView.LayoutManager mLayoutManager=新的LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(mLayoutManager);
setItemAnimator(新的DefaultItemAnimator());
recyclerView.setAdapter(mAdapter);
prepareMovieData();
返回视图;
}
私有void prepareMovieData(){
乡村=新乡村(“疯狂麦克斯:狂暴之路”、“行动与冒险”);
国家列表。添加(国家);
Country Country 1=新国家(“疯狂麦克斯:狂暴之路”、“行动与冒险”);
countryList.add(country1);
Country Country 2=新国家(“疯狂麦克斯:狂暴之路”、“行动与冒险”);
countryList.add(country2);
Country Country 3=新国家(“疯狂的马克斯:狂暴之路”、“行动与冒险”);
countryList.add(country3);
Country Country 4=新国家(“疯狂麦克斯:狂暴之路”、“行动与冒险”);
countryList.add(country4);
}

如何防止这些自动增加的项目?

默认情况下,ViewPage可以容纳2个片段,您使用的是4,因此在转到4之后,如果返回到1,if将调用第一个片段的创建,反之亦然。为了防止这种使用

     mViewPager.setOffscreenPageLimit(4);

setOffscreenPageLimit将保留堆栈中的所有4个片段,并防止重新创建。

默认情况下,ViewPage可以保存2个片段,您使用的是4,因此在转到4之后,如果返回到1,if将调用第一个片段的创建,反之亦然。为了防止这种使用

     mViewPager.setOffscreenPageLimit(4);
setOffscreenPageLimit将保留堆栈中的所有4个碎片,并阻止重新创建