Reputation: 575
In my project, I have created a viewpager and inside pageradapter I am adding the list of fragments. I have a button in viewpager fragment. This button should show and hide only in few fragments. That means when I am in firstfragment the button should be disabled. Again when i swipe to second fragment the button should enable. Again in third fragment the button should enable. When i try to disable the button in first fragment it is getting disabled in all the three fragments. Can anybody let me know how can I resolve this.
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;
}
}
Upvotes: 0
Views: 466
Reputation: 502
you can add listener to your ViewPager.like this and change your button's state in the method of 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);
Upvotes: 1