Singleton不会删除对象

时间:2017-04-16 12:04:31

标签: android

我有活动服务,您点击回收商项目,然后打开带有子服务的ServiceDetailActivity。您可以向单例添加服务,并从该单例中的Basket Activity访问它。问题在于我将服务添加到单身人士并转到篮子,这样就可以了。但是当我回到服务然后再回到ServiceDetailActivity并再次单击我之前选择的子服务时,它应该从Singleton中删除它。但它没有,请帮助我!!!如何解决这个问题?

   public class ServiceDetailActivity extends BaseActivity implements ServiceDetailItemClickListener.ServiceDetailClickListener {

private static final String TAG = "ServiceDetailActivity";
RecyclerView serviceView;
ArrayList<Service> servicesList;
TextView priceText;
int priceSum = 0;
int durationSum = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_service_detail);
    activateToolbar(true);
    priceText = (TextView) findViewById(R.id.priceSumText);
    if (Order.getInstance().getPriceSum() == 0) {
        Order.getInstance().setPriceSum(priceSum);
        priceText.setText("Итого: 0 тг.");
    } else {
        priceSum = Order.getInstance().getPriceSum();
        priceText.setText("Итого: " + Order.getInstance().getPriceSum() + "тг.");
    }

    Intent intent = getIntent();
    final String serviceName = intent.getStringExtra("serviceName");
    DatabaseReference mReference = FirebaseDatabase.getInstance().getReference().child("service").child(serviceName);
    Query query = mReference.orderByChild("priority");

    serviceView = (RecyclerView) findViewById(R.id.serviceDetailRecyclerView);
    serviceView.setHasFixedSize(false);
    serviceView.setLayoutManager(new LinearLayoutManager(this));
    servicesList = new ArrayList<>();

    final FirebaseRecyclerAdapter<Service, ServiceHolder> adapter = new FirebaseRecyclerAdapter<Service, ServiceHolder>(Service.class, R.layout.browse_service_detail, ServiceHolder.class, query) {
        @Override
        protected void populateViewHolder(ServiceHolder serviceHolder, Service service, int position) {
            serviceHolder.setServiceName(service.getName());
            serviceHolder.setInfo("От " + service.getPrice1());
            service.setQuantitySelected(service.getQuantityEnabled());
            if (Order.getInstance().getPriceSum() == 0) {
                Order.getInstance().setPriceSum(priceSum);
                priceText.setText("Итого: 0 тг.");
            } else {
                priceSum = Order.getInstance().getPriceSum();
                priceText.setText("Итого: " + Order.getInstance().getPriceSum() + "тг.");
            }

            if (Order.getInstance().getDurationSum() == 0) {
                Order.getInstance().setDurationSum(durationSum);
            } else {
                durationSum = Order.getInstance().getDurationSum();
            }

            int duration = service.getDuration();
            if (duration >= 24) {
                serviceHolder.setInfo("От " + service.getPrice1() + ", Срок " + duration/24 + " дн. \n");
                serviceHolder.appendInfo(Order.getInstance().getCar().getCarInfo());
            } else {
                serviceHolder.setInfo("От " + service.getPrice1() + ", Срок " + service.getDuration() + "ч.\n");
                serviceHolder.appendInfo("" + Order.getInstance().getCar().getCarInfo());

                if (Order.getInstance().getServices() != null) {
                    for (int i = 0; i < Order.getInstance().getServices().size(); i++) {
                        if (serviceHolder.getServiceName().getText().toString().equalsIgnoreCase(Order.getInstance().getServices().get(i).getName())) {
                            serviceHolder.getServiceName().setSelected(true);
                            serviceHolder.getServiceName().setTextColor(getResources().getColor(R.color.yellow));
                        }
                    }
                }
            }
        }
    };

    mReference.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            servicesList.add(dataSnapshot.getValue(Service.class));
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

    serviceView.setAdapter(adapter);
    serviceView.addOnItemTouchListener(new ServiceDetailItemClickListener(this, serviceView, this));

}


public static class ServiceHolder extends RecyclerView.ViewHolder {
    TextView serviceName;
    TextView info;

    public ServiceHolder(View view){
        super(view);
        serviceName = (TextView) view.findViewById(R.id.serviceDetailTextView);
        info = (TextView) view.findViewById(R.id.infoTextView);
    }

    public void setServiceName(String serviceName) {
        this.serviceName.setText(serviceName);
    }

    public void setInfo(String info) {
        this.info.setText(info);
    }

    public void appendInfo(String text) {
        this.info.append(text);
    }

    public TextView getServiceName() {
        return serviceName;
    }
}

@Override
public void onItemClick(View view, int position) {
            Resources r = getResources();
            TextView name = (TextView) view.findViewById(R.id.serviceDetailTextView);

            if ( !(name.isSelected())) {
                name.setTextColor(r.getColor(R.color.yellow));
                name.setSelected(true);
                for (Service s: servicesList) {
                    if (name.getText().toString().equals(s.getName())) {
                        Service.getInstance().getServices().add(s);
                        Order.getInstance().setServices(Service.getInstance().getServices());
                        priceSum += s.getPrice1();
                        Order.getInstance().setPriceSum(priceSum);
                        priceText.setText("Итого: " + Order.getInstance().getPriceSum() + "тг.");
                        Log.d(TAG, "onItemClick: Order services " + Order.getInstance().getServices());
                    }
                }
            } else {
                name.setTextColor(r.getColor(android.R.color.white));
                name.setSelected(false);
                for (Service s : servicesList) {
                    if (s.getName().equals(name.getText().toString())) {
                        Service.getInstance().getServices().remove(s);
                        Log.d(TAG, "onItemClick: Service singleton " + Service.getInstance().getServices());
                        Order.getInstance().setServices(Service.getInstance().getServices());
                        priceSum -= s.getPrice1();
                        Order.getInstance().setPriceSum(priceSum);
                        priceText.setText("Итого: " + Order.getInstance().getPriceSum() + "тг.");
                        Log.d(TAG, "onItemClick: Order services after remove " + Order.getInstance().getServices());
                    }
                }
            }
}

@Override
public void onLongItemClick(View view, int position) {
    TextView name = (TextView) view.findViewById(R.id.serviceDetailTextView);
            for (Service s: servicesList) {
                if (name.getText().toString().equalsIgnoreCase(s.getName())) {
                    if (s.getName().equals("empty")) {
                        Toast.makeText(ServiceDetailActivity.this, "Empty detail info", Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(ServiceDetailActivity.this, s.getDetailInfo(), Toast.LENGTH_LONG).show();
                    }
                }
            }
}

@Override
protected void onResume() {
    super.onResume();
    Order.getInstance();
    Service.getInstance();
}

}

0 个答案:

没有答案