在我检查基本适配器中的按钮后,片段没有更新

fragment is not updating after i checked the button in the base adapter

嗨朋友们我是 android 开发的新手 我正在开发一个类似于 flipkart 的应用程序。我正在使用有 4 个标签的标签布局 1.home 2.menu 3.cart 4.settings

每个选项卡都包含列表视图,每个选项卡中都有片段,当我单击菜单按钮和 select 我想订购的项目时,在订购后,它没有加载到购物车,所以我无法在购物车中找到商品

MenuAdapter.Java

public class Second_adapter extends BaseAdapter {
Context context;
TextView basename, SubItemprice, itemdesc, SubItemdesc;
LayoutInflater inflater;
ImageView order;
private List<JSONParser> items;
String itembasename, itemde, subtmsub, subitempri;
SharedPreferences.Editor loginPrefsEditor;

public Second_adapter(Context context, List<JSONParser> items) {
    this.context = context;
    this.items = items;
}

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

@Override
public Object getItem(int i) {
    return items.get(i);
}

@Override
public long getItemId(int i) {
    return i;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (view == null)
        view = inflater.inflate(R.layout.item_clicked, viewGroup, false);
    basename = (TextView) view.findViewById(R.id.basename);
    SubItemprice = (TextView) view.findViewById(R.id.SubItemprice);
    itemdesc = (TextView) view.findViewById(R.id.itemdesc);
    SubItemdesc = (TextView) view.findViewById(R.id.SubItemdesc);
    order = (ImageView) view.findViewById(R.id.order);
    final JSONParser setdata = items.get(i);
    basename.setText(setdata.getBaseName());
    itemdesc.setText(setdata.getItemdesc());
    SubItemdesc.setText(setdata.getSubItemdesc());
    SubItemprice.setText(setdata.getSubItemprice());
    order.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            itembasename = setdata.getBaseName();
            itemde = setdata.getItemdesc();
            subtmsub = setdata.getSubItemdesc();
            subitempri = setdata.getSubItemprice();
            Session userloggedin=new Session(context);
            if (userloggedin.isLoggedIn()){
                addcart();
               Cart cart=new Cart();
                cart.cartdata();
                Toast.makeText(context, "LoggedIn" +itembasename+itemde+subtmsub+subitempri, Toast.LENGTH_SHORT).show();
            }else{
                Toast.makeText(context,"Please Login", Toast.LENGTH_SHORT).show();
            }
        }
    });
    return view;
}

private void addcart() {
    SharedPreferences customerid=context.getSharedPreferences("loginPrefs",Context.MODE_PRIVATE);
    String customid=customerid.getString("customerid","");
    String addcarturl = "http://standardtakeaway.co.uk/json/cart_process.php?userid="+customid+"&Item="+itembasename+itemde+subtmsub+"&Itemcount=1&price="+subitempri;
    Log.d("Cart",addcarturl);
    JsonArrayRequest cartreq=new JsonArrayRequest(Request.Method.POST, addcarturl, (String) null, new Response.Listener<JSONArray>() {
        @Override
        public void onResponse(JSONArray response) {
            for (int i=0;i<response.length();i++){
                try {
                    JSONObject cartobj=response.getJSONObject(i);
                    String count=cartobj.getString("count");
                    loginPrefsEditor.putString("Badge",count);
                    loginPrefsEditor.commit();
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(context,""+error, Toast.LENGTH_SHORT).show();
        }
    });
    AppController.getInstance().addToRequestQueue(cartreq);
}

}

Cart.Class

public class Cart extends Fragment {
Button check_out;
TextView subtotal;
ListView cartview;
CartAdapter cartAdapter;
List<JSONParser> cartitems;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View cartfrag = inflater.inflate(R.layout.cart, container, false);
    subtotal = (TextView) cartfrag.findViewById(R.id.subtotal);
    cartview = (ListView) cartfrag.findViewById(R.id.cartview);
    cartitems = new ArrayList<JSONParser>();
    cartAdapter = new CartAdapter(getActivity(), cartitems);
    cartview.setAdapter(cartAdapter);
    check_out = (Button) cartfrag.findViewById(R.id.check_out);
    check_out.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent cart_check = new Intent(getActivity(), Check.class);
            startActivity(cart_check);
        }
    });
  Session cartlogged=new Session(getActivity());
   if (cartlogged.isLoggedIn()){
        cartdata();
    }else {
        Toast.makeText(getActivity(),"Not Logged", Toast.LENGTH_SHORT).show();
    }
    cartdata();
    return cartfrag;
}

void cartdata() {
    SharedPreferences customerid=getActivity().getSharedPreferences("loginPrefs", Context.MODE_PRIVATE);
    String customid=customerid.getString("customerid","");
    String carturl = "http://standardtakeaway.co.uk/json/view_cart.php?userid=" + customid;
    Log.d("CartData", carturl);
    JsonObjectRequest cartreq = new JsonObjectRequest(Request.Method.GET, carturl, (String) null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            try {
                JSONArray objarray = response.getJSONArray("items");
                for (int i = 0; i < objarray.length(); i++) {
                    JSONObject cartdataobj = objarray.getJSONObject(i);
                    JSONParser parserdata = new JSONParser();
                    parserdata.setCartquantity(cartdataobj.getString("qty"));
                    parserdata.setCartbase(cartdataobj.getString("BaseName"));
                    parserdata.setCartprice(cartdataobj.getString("price"));
                    cartitems.add(parserdata);
                }
                JSONObject subobj=response.getJSONObject("details");
                String subtext=subobj.getString("subtotal");
                subtotal.setText(subtext);
            } catch (JSONException e) {
                e.printStackTrace();
            }
            cartAdapter.notifyDataSetChanged();
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(getActivity(), "" + error, Toast.LENGTH_SHORT).show();
        }
    });
    cartreq.setRetryPolicy(new DefaultRetryPolicy(6000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    AppController.getInstance().addToRequestQueue(cartreq);
}

public static Cart getInstance(String message) {
    Cart cart = new Cart();
    Bundle bundle = new Bundle();
    bundle.putString("MSG", message);
    cart.setArguments(bundle);
    return cart;
}

TabLayout.java

public class TabAdapter extends FragmentStatePagerAdapter {
    private Context mContext;

    private List<Fragment> mFragments = new ArrayList<>();
    private List<String> mFragmentTitles = new ArrayList<>();
    private List<Integer> mFragmentIcons = new ArrayList<>();




    public TabAdapter(Context context, FragmentManager fm) {
        super(fm);
        this.mContext = context;
    }


    public void addFragment(Fragment fragment, String title, int drawable) {
        mFragments.add(fragment);
        mFragmentTitles.add(title);
        mFragmentIcons.add(drawable);
    }

    @Override
    public Fragment getItem(int position) {

        return mFragments.get(position);

    }

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

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

    public View getTabView(int position) {
        View tab = LayoutInflater.from(mContext).inflate(R.layout.customtab, null);
        TextView tabText = (TextView) tab.findViewById(R.id.tabText);
        ImageView tabImage = (ImageView) tab.findViewById(R.id.tabImage);
        tabText.setText(mFragmentTitles.get(position));
        tabImage.setBackgroundResource(mFragmentIcons.get(position));
        if (position == 0) {
            tab.setSelected(true);
        }
        return tab;
    }
}

MainActivity.java

public class MainActivity extends BaseActivity implements OnFragmentInteractionListener {
    @Bind(R.id.tabpager)
    ViewPager mViewpager;
    @Bind(R.id.tab_layout)
    TabLayout mTabs;
    private TabAdapter pageAdapter;
    String home,menu,cart,account,more;


    @Override
    protected int getLayoutResource() {
        return R.layout.activity_main;
    }

    @Override
    protected void initVariables(Bundle savedInstanceState) {
        home= getString(R.string.home);
        menu = getString(R.string.menu);
        cart = getString(R.string.cart);
        account = getString(R.string.account);
        more = getString(R.string.more);
    }

    @Override
    protected void initData(Bundle savedInstanceState) {
        setupViewPager(mViewpager);
        setupTabLayout(mTabs);

    }



    public void setupViewPager(ViewPager viewPager) {
        pageAdapter = new TabAdapter(getApplicationContext(), getSupportFragmentManager());
        pageAdapter.addFragment(MainFragment.getInstance(home), home, R.drawable.home);
        pageAdapter.addFragment(MenuItems.getInstance(menu), menu, R.drawable.menu);
        pageAdapter.addFragment(Cart.getInstance(cart), cart, R.drawable.cart);
        pageAdapter.addFragment(Account.getInstance(account), account, R.drawable.account);
        pageAdapter.addFragment(More.getInstance(more), more, R.drawable.more);
        viewPager.setAdapter(pageAdapter);

    }



    public void setupTabLayout(TabLayout tabLayout) {
        tabLayout.setTabMode(TabLayout.MODE_FIXED);
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
        tabLayout.setupWithViewPager(mViewpager);
        mViewpager.setOffscreenPageLimit(4);

        for (int i = 0; i < tabLayout.getTabCount(); i++) {
            TabLayout.Tab tab = tabLayout.getTabAt(i);
            tab.setCustomView(pageAdapter.getTabView(i));
        }
        tabLayout.requestFocus();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

您可以通过在 viewPager 上设置 setOnPageChangeListener 来解决此问题:

viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageSelected(int index) {
                // TODO Auto-generated method stub
                if(index==3){
                    ((Cart) mAdapter.getItem(index)).cartdata();                        
                }
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub

            }
        });

您的 cartdata() 必须是 public。