在我的项目中,我创建了一个查看页器,在pageradapter中,我正在添加片段列表。我在查看页片段中有一个按钮。此按钮应仅在少数片段中显示和隐藏。这意味着当我在第一个片段中时,应该禁用该按钮。再次,当我滑动到第二个片段时,按钮应该启用。再次在第三个片段中,按钮应该启用。当我尝试禁用第一个片段中的按钮时,它在所有三个片段中都被禁用。任何人都可以告诉我如何解决这个问题。
Code:
public class ViewPagerFragment extends Fragment {
TextView tv1,tv2,tvalue2,tv3, tvalue3,tv4,tvalue4;
public static Button button1, button2;
public static ViewPager pager;
public static TabLayout tabLayout;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//returning our layout file
//change R.layout.yourlayoutfilename for each of your fragments
View v = inflater.inflate(R.layout.pagerlayout, container, false);
pager = (ViewPager)v.findViewById(R.id.viewPager);
pager.setAdapter(new ViewPagerAdapter(getChildFragmentManager()));
tabLayout = (TabLayout) v.findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(pager, true);
System.out.println("curent pagerrrr"+Integer.toString(pager.getCurrentItem()));
tv1 = (TextView)v.findViewById(R.id.tv1);
tv2 = (TextView)v.findViewById(R.id.tv2);
tvalue2 = (TextView)v.findViewById(R.id.tvalue2);
tv3 = (TextView)v.findViewById(R.id.tv3);
tvalue3 = (TextView)v.findViewById(R.id.tvalue3);
tv4 = (TextView)v.findViewById(R.id.tv4);
tvalue4 = (TextView)v.findViewById(R.id.tvalue4);
button1 = (Button) v.findViewById(R.id.btn1);
button1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// do something
button1.setVisibility(v.GONE);
tv1.setVisibility(v.VISIBLE);
tv2.setVisibility(v.VISIBLE);
tvalue2.setVisibility(v.VISIBLE);
tv3.setVisibility(v.VISIBLE);
tvalue3.setVisibility(v.VISIBLE);
tv4.setVisibility(v.VISIBLE);
tvalue4.setVisibility(v.VISIBLE);
button2.setVisibility(v.VISIBLE);
}
});
return v;
}
}
PagerAdapter
public class ViewPagerAdapter extends FragmentPagerAdapter {
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int pos) {
switch(pos) {
case 0: return Fragment1.newInstance("");
case 1: return Fragment2.newInstance("");
case 2: return Fragment3.newInstance("");
default: return Fragment1.newInstance("");
}
}
@Override
public int getCount() {
return 3;
}
}
你可以像这样将侦听器添加到ViewPager.,并在onPageSelected的方法中更改按钮的状态。
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position==0){
button1.setEnabled(false);
}else {
button1.setEnabled(true);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
pager.setCurrentItem(0);