简体   繁体   中英

How to add quantiy of food item in dynamic fragments?

I am creating a online food order app, I displayed single item in single fragment(not in listing form) within a view pager but when I am trying to add quantity of an item then changes display in other items(ie changes displayed in other fragment) quantity not in same item because there is so many items.

How to manage the quantity of per item so that changes display within same item not in others and one more thing which create issue in this code is when I swipe items then it reset quantity. I want to know how to add or remove quantity of an individual item in view pager fragments.

Here is my code:

    public PlaceholderFragment() {
    }

    public static PlaceholderFragment newInstance(int position) {
        PlaceholderFragment fragment = new PlaceholderFragment();
        String itemTitle = foodItemTitle.get(position);
        String itemPrice = foodItemPrice.get(position);
        String itemImage = foodItemImage.get(position);

        Bundle args = new Bundle();
        args.putString("ITEMS", itemTitle);
        args.putString("PRICE", itemPrice);
        args.putString("IMAGE", itemImage);
        fragment.setArguments(args);
        return fragment;
    }
    public static void setContext( Activity activity) {
        context = activity;
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_items_list, container, false);
        img = (ImageView) rootView.findViewById(R.id.section_label);
        pricePerItem = rootView.findViewById(R.id.price);
        nutri = rootView.findViewById(R.id.itemName);
        removeBtn=rootView.findViewById(R.id.removebtn);
        addBtn=rootView.findViewById(R.id.addBtn);
        quantity=rootView.findViewById(R.id.qty);
        String items = getArguments().get("ITEMS").toString();
        final String price = getArguments().get("PRICE").toString();
        String image = getArguments().get("IMAGE").toString();
        setItemDetails(items, price, image);
        addBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                countTtl = count + 1;
                int curntQty = Integer.parseInt(quantity.getText().toString()) + 1;
                Toast.makeText(getContext(), String.valueOf(curntQty), Toast.LENGTH_SHORT).show();
                quantity.setText(String.valueOf(curntQty));}});
        removeBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (quantity.getText().toString().equals("0")) {

                    Toast.makeText(getContext(), "Add Item First", Toast.LENGTH_SHORT).show();

                } else {

                    int qtyTtl = Integer.parseInt(quantity.getText().toString()) - 1;

                    quantity.setText(String.valueOf(qtyTtl));
                    Toast.makeText(getContext(), quantity.getText().toString(), Toast.LENGTH_SHORT).show(); }
            }
        });
        return rootView;
    }
}


private static void setItemDetails(String item, String price, String image) {
    String[] itemStr = item.split(",");
    String[] itemPriceStr = price.split(",");
    String[] imageStr = image.split(",");

    for (int i = 0; i < itemStr.length; i++) {

        String oneItem = itemStr[i].trim();
        oneItem = oneItem.replace("[", "");
        oneItem = oneItem.replace("]", "");
        nutri.setText(oneItem);
        String Price = itemPriceStr[i].trim();
        String perImage = imageStr[i].trim();

        Price = Price.replace("[", "");
        Price = Price.replace("]", "");
        pricePerItem.setText(Price);

        perImage = perImage.replace("[", "");
        perImage = perImage.replace("]", "");

    }

}


public class SectionsPagerAdapter extends FragmentPagerAdapter {

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

    @Override
    public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
        return PlaceholderFragment.newInstance(position + 0);
    }

    @Override
    public int getCount() {
        // Show 3 total pages.
        return mFragmentList.size();
    }

    public void addFragment(Fragment fragment) {
        mFragmentList.add(fragment);
    }
@Override
 public int getItemPosition(Object object) {
return super.getItemPosition(object);}}

I want to display quantity in same if I add item of a fragment

If I understand you code correctly quantity=rootView.findViewById(R.id.qty); and you set the new quantity with quantity.setText(String.valueOf(curntQty)); quantity can only point to a different fragment (and thus view) if your rootView contains more than one fragment.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM