Android 在适配器listview中单击按钮后,未刷新片段

Android 在适配器listview中单击按钮后,未刷新片段,android,listview,android-fragments,fragment,baseadapter,Android,Listview,Android Fragments,Fragment,Baseadapter,我有五个选项卡,它们是1.home 2.menu 3.cart 4.account 5.more。这里cart选项卡由列表视图组成,其中包含删除按钮,当我单击该删除按钮时,它必须刷新片段本身,以便从Json加载新数据 主课 public class MainActivity extends BaseActivity implements OnFragmentInteractionListener { @Bind(R.id.tabpager) ViewPager mViewpage

我有五个选项卡,它们是1.home 2.menu 3.cart 4.account 5.more。这里cart选项卡由列表视图组成,其中包含删除按钮,当我单击该删除按钮时,它必须刷新片段本身,以便从Json加载新数据

主课

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);
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                Session cartsession=new Session(getApplicationContext());
                if (cartsession.isLoggedIn()){
                    if (position==2){
                        ((Cart) pageAdapter.getItem(position)).cartdata();
                    }
                }

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

    }



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

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


}
public类MainActivity扩展了BaseActivity在FragmentInteractionListener上的实现{
@绑定(R.id.tabpager)
ViewPager mViewpager;
@绑定(R.id.tab\U布局)
制定MTAB表格;
专用TabAdapter页面适配器;
字符串主页、菜单、购物车、帐户等;
@凌驾
受保护的int getLayoutResource(){
返回R.layout.activity\u main;
}
@凌驾
受保护的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);
}
@凌驾
受保护的void initData(Bundle savedInstanceState){
setupViewPager(mViewpager);
可设置布局(MTAB);
}
公共无效设置ViewPager(ViewPager ViewPager){
pageAdapter=新选项卡适配器(getApplicationContext(),getSupportFragmentManager());
pageAdapter.addFragment(MainFragment.getInstance(home)、home、R.drawable.home);
pageAdapter.addFragment(MenuItems.getInstance(菜单)、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(页面适配器);
viewPager.addOnPageChangeListener(新的viewPager.OnPageChangeListener(){
@凌驾
已滚动页面上的公共无效(int-position、float-positionOffset、int-positionOffsetPixels){
}
@凌驾
已选择页面上的公共无效(内部位置){
会话cartsession=新会话(getApplicationContext());
if(cartsession.isLoggedIn()){
如果(位置==2){
((购物车)pageAdapter.getItem(position)).cartdata();
}
}
}
@凌驾
公共无效onPageScrollStateChanged(int状态){
}
});
}
公共无效设置TabLayout(TabLayout TabLayout){
tabLayout.setTabMode(tabLayout.MODE_固定);
tabLayout.setTabGravity(tabLayout.GRAVITY\u-FILL);
tabLayout.setupWithViewPager(mviewpage);
for(int i=0;i
TabAdapter.class

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;
    }
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }
}
public class CartAdapter extends BaseAdapter {
    Context context;
    TextView quantity, basenamecart, cartprice;
    ImageButton delete;
    private List<JSONParser> cartitems;
    LayoutInflater inflater;
    String removequantity, removeitemprice,removebasename;
    public CartAdapter(Context context, List<JSONParser> cartitems) {
        this.context = context;
        this.cartitems = cartitems;
    }

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

    @Override
    public Object getItem(int position) {
        return cartitems.get(position);
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.cartitems, parent, false);
            quantity = (TextView) convertView.findViewById(R.id.quantity);
            basenamecart = (TextView) convertView.findViewById(R.id.basenamecart);
            cartprice = (TextView) convertView.findViewById(R.id.cartprice);
            delete= (ImageButton) convertView.findViewById(R.id.delete);
            final JSONParser dataparser = cartitems.get(position);
            quantity.setText(dataparser.getCartquantity());
            basenamecart.setText(dataparser.getCartbase());
            cartprice.setText(dataparser.getCartprice());
            delete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    removequantity=dataparser.getCartquantity();
                    removebasename=dataparser.getCartbase();
                    removeitemprice=dataparser.getCartprice();
                    removecart();
                }
            });
        }
        return convertView;
    }
    private void removecart(){
        SharedPreferences customerid=context.getSharedPreferences("loginPrefs", Context.MODE_PRIVATE);
        String removeid=customerid.getString("customerid","");
        String removeurl="http://standardtakeaway.co.uk/json/del_cartitems.php?userid="+removeid+"&Item="+removebasename+"&price="+removeitemprice;
        Log.d("Remove",removeurl);
        final JsonArrayRequest removearray=new JsonArrayRequest(Request.Method.GET, removeurl, (String) null, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                for (int i=0;i<response.length();i++){
                    Log.d("Remove", String.valueOf(response));
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });
        removearray.setRetryPolicy(new DefaultRetryPolicy(6000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        AppController.getInstance().addToRequestQueue(removearray);
    }

}
公共类TabAdapter扩展FragmentStatePagerAdapter{
私有上下文;
私有列表MFFragments=newArrayList();
私有列表MFFragmentTitles=new ArrayList();
私有列表MFFragmentications=new ArrayList();
公共TabAdapter(上下文上下文,FragmentManager fm){
超级(fm);
this.mContext=上下文;
}
public void addFragment(片段片段,字符串标题,int可绘制){
添加(片段);
MFFragmentTitles.add(标题);
添加(可提取);
}
@凌驾
公共片段getItem(int位置){
返回mFragments.get(位置);
}
@凌驾
public int getCount(){
返回mffragments.size();
}
@凌驾
公共字符序列getPageTitle(int位置){
返回MFFragmentTitles.get(位置);
}
公共视图getTabView(内部位置){
视图选项卡=LayoutFlater.from(mContext).充气(R.layout.customtab,null);
TextView tabText=(TextView)tab.findViewById(R.id.tabText);
ImageView选项卡image=(ImageView)选项卡.findViewById(R.id.tabImage);
tabText.setText(mffragmenttitles.get(position));
tabImage.setBackgroundResource(mffragmentications.get(position));
如果(位置==0){
tab.setSelected(true);
}
返回选项卡;
}
public int getItemPosition(对象){
返回位置\无;
}
}
Java

public class Cart extends Fragment {
    Button check_out;
    TextView subtotal;
    ListView cartview;
    CartAdapter cartAdapter;
    List<JSONParser> cartitems;
    SharedPreferences loginPreferences;
    SharedPreferences.Editor loginPrefsEditor;
    TextView cartstatus,cartempty;
    LinearLayout linearlay;
    RelativeLayout cartvisible;

    @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);
        cartstatus = (TextView) cartfrag.findViewById(R.id.cartstatus);
        cartempty = (TextView) cartfrag.findViewById(R.id.cartempty);
        linearlay = (LinearLayout) cartfrag.findViewById(R.id.linearlay);
        cartvisible = (RelativeLayout) cartfrag.findViewById(R.id.cartvisible);
        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()) {
            cartitems.clear();
            cartdata();
        } else {
            cartstatus.setText("Please Login");
        }
        return cartfrag;
    }

    void cartdata() {
        cartitems.clear();
        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 {
                    if (response.getString("status").equals("empty")) {
                        cartstatus.setVisibility(View.GONE);
                        cartempty.setText("Your Cart is Empty");
                    } else {
                        JSONArray objarray = response.getJSONArray("items");
                        for (int i = 0; i < objarray.length(); i++) {
                            JSONObject cartdataobj = objarray.getJSONObject(i);
                            linearlay.setVisibility(View.VISIBLE);
                            cartvisible.setVisibility(View.GONE);
                            JSONParser parserdata = new JSONParser();
                            parserdata.setCartquantity(cartdataobj.getString("qty"));
                            parserdata.setCartbase(cartdataobj.getString("BaseName"));
                            parserdata.setCartprice(cartdataobj.getString("price"));
                            cartitems.add(parserdata);
                            loginPreferences = getActivity().getSharedPreferences("loginPrefs", Context.MODE_PRIVATE);
                            loginPrefsEditor = loginPreferences.edit();
                            JSONObject subobj = response.getJSONObject("details");
                            String subtext = subobj.getString("subtotal");
                            loginPrefsEditor.putString("Price", subtext);
                            loginPrefsEditor.commit();
                            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;
    }
}
公共类Cart扩展片段{
按钮签出;
文本视图小计;
ListView-cartview;
卡塔适配器卡塔适配器;
列出搬运物项;
共享引用登录引用;
SharedPreferences.Editor登录PreferEditor;
TextView cartstatus,cartempty;
线性布局线性布局;
相对长度是可见的;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图cartfrag=充气机。充气(R.layout.cart,container,false);
小计=(TextView)cartfrag.findViewById(R.id.subtotal);
cartview=(ListView)cartfrag.findViewById(R.id.cartview);
cartstatus=(TextView)cartfrag.findViewById(R.id.cartstatus);
cartempty=(TextView)cartfrag.findviewbyd(R.id.cartempty);
linearlay=(LinearLayout)cartfrag.findViewById(R.id.linearlay);
cartvisible=(RelativeLayout)cartfrag.findViewById(R.id.cartvisible);
cartitems=新的ArrayList();
cartAdapter=新的cartAdapter(getActivity(),cartitems);
setAdapter(cartAdapter);
check_out=(按钮)cartfrag.findviewbyd(R.id.check_out);
签出.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Intent cart\u check=newintent(getActivity(),check.class);
星触感(小车检查);
}
});
会话记录=新会话(getActivity());
if(cartloged.isLoggedIn()){
cartitems.clear();
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        convertView = inflater.inflate(R.layout.cartitems, parent, false);
        quantity = (TextView) convertView.findViewById(R.id.quantity);
        basenamecart = (TextView) convertView.findViewById(R.id.basenamecart);
        cartprice = (TextView) convertView.findViewById(R.id.cartprice);
        delete= (ImageButton) convertView.findViewById(R.id.delete);
        final JSONParser dataparser = cartitems.get(position);
        quantity.setText(dataparser.getCartquantity());
        basenamecart.setText(dataparser.getCartbase());
        cartprice.setText(dataparser.getCartprice());

        final int pos =position; // added line
        delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                removequantity=dataparser.getCartquantity();
                removebasename=dataparser.getCartbase();
                removeitemprice=dataparser.getCartprice();
                removecart(pos); //updated line
            }
        });
    }
    return convertView;
}
public void updateCartitems(List<JSONParser> newCartitems) {
   cartitems.clear();
   cartitems.addAll(newCartitems);
   this.notifyDataSetChanged();
}
private void removecart(int pos){ // updated line
    SharedPreferences customerid=context.getSharedPreferences("loginPrefs", Context.MODE_PRIVATE);
    String removeid=customerid.getString("customerid","");
    String removeurl="http://standardtakeaway.co.uk/json/del_cartitems.php?userid="+removeid+"&Item="+removebasename+"&price="+removeitemprice;
    Log.d("Remove",removeurl);
    final JsonArrayRequest removearray=new JsonArrayRequest(Request.Method.GET, removeurl, (String) null, new Response.Listener<JSONArray>() {
        @Override
        public void onResponse(JSONArray response) {
            for (int i=0;i<response.length();i++){
                Log.d("Remove", String.valueOf(response));

            }

           cartitems.remove(pos); //added line
           updateCartitems(cartitems);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    });
    removearray.setRetryPolicy(new DefaultRetryPolicy(6000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    AppController.getInstance().addToRequestQueue(removearray);
}