Android 在适配器listview中单击按钮后,未刷新片段
我有五个选项卡,它们是1.home 2.menu 3.cart 4.account 5.more。这里cart选项卡由列表视图组成,其中包含删除按钮,当我单击该删除按钮时,它必须刷新片段本身,以便从Json加载新数据 主课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
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);
}