1

I have 3 tab which are Home, Search, Cart.

Most of what i came accross was onPagedSelected which is not what i want. None points out my purpose, or am i getting something wrong.

In the cart fragment i have a listview that display all items having increment (+) and decrement (-) button and a text box between to display the quantity value. On clicking the increment or decrement button, i want the same Cart fragment to refresh or reload and show the new increment value that will lead to new price.

all i have done was on button click, an increment method save to the database then i called the cart fragment empty construct so every thing can be recreated, but i got no result.

Attempt/Research Made: My fragments in viewpager tab dont refresh : My fragments in viewpager tab dont refresh

View pager and fragment lifecycle : View pager and fragment lifecycle

Refresh PageViewer Fragment everytime user selects Fragment: http://semycolon.blogspot.com/2014/12/refresh-pageviewer-fragment-everytime.html

Refresh Fragment : https://medium.com/@taman.neupane/fragment-refresh-9ba6a6d7b897

Refresh PageViewer Fragment everytime user selects Fragment : http://semycolon.blogspot.com/2014/12/refresh-pageviewer-fragment-everytime.html

ViewPager with fragmentPagerAdapter : https://guides.codepath.com/android/viewpager-with-fragmentpageradapter

Here is the BaseAdapter Class that populate the ListView shown in the cart fragment

Button increaseItemQuantity = view.findViewById(R.id.increaseItemQuantity);
        increaseItemQuantity.setOnClickListener(new View.OnClickListener() {
            private int itemCount;
            @Override
            public void onClick(View view) {
                if(cart.getTestcart_quantity() > 0){
                    itemCount = cart.getTestcart_quantity() + 1;
                    new CartManager(context, cart.getUser_id(), cart.getProduct() , itemCount).updateCart();
                    displayQuantity.setText(String.valueOf(itemCount));      
           // the does not update the new value in the textbox between the plus and minus button in my UI
                  new UserCart();   // on success it came back here to call the same cart fragment class after button click
                       Log.d("Message", String.valueOf(itemCount));
            }
        }
    });

Here is my HomePageActivty

final ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());

    //Adding Fragments
    adapter.addFragment(new ContentOne(), "");
    adapter.addFragment(new ContentTwo(), "");
    adapter.addFragment(new UserCart(), "");

    //adapter setup
    viewPager.setAdapter(adapter);
    tabLayout.setupWithViewPager(viewPager);

Here is my ViewPageAdapter

public class ViewPagerAdapter extends FragmentStatePagerAdapter  {

    private List<Fragment> fragmentList         =   new ArrayList<>();
    private List<String> fragmentListTitle    =   new ArrayList<>();

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

    @Override
    public Fragment getItem(int position) {
        switch (position) {
         case 0:
         return new ContentOne();
         case 1:
         return new ContentTwo();
         case 2:
        return new UserCart();
        default:
        return null;
      }
  }

    @Override
    public int getCount() {
       return fragmentListTitle.size();
    }

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

   public void addFragment(Fragment fragment, String Title){
     fragmentList.add(fragment);
     fragmentListTitle.add(Title);
   }

  }
Dumar
  • 11
  • 2
  • Have you tried using Viewpager's setOffscreen limit to 0 – Aman Rawat Dec 28 '18 at 11:29
  • The only solution i got was using intent pointing out the specific tab of the viewpager.have tried using interface, still working on trying to use observer. – Dumar Dec 28 '18 at 16:54
  • Intent i = new Intent(context.getApplicationContext(), HomePage.class); i.putExtra(HomePage.SELECTED_TAB_EXTRA_KEY, HomePage.CART); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); context.startActivity(i); – Dumar Dec 28 '18 at 17:00

0 Answers0