Ваша проблема связана с ссылкой на объект.
Вы передаете один объект в Адаптер и используете другой в Activity.
facultyAdapter = new FacultyAdapter(getApplicationContext(), mydb.display()); //one object
и сохраняете в сообщении с использованием той же функции db
posts= mydb.display(); //creates another object
Что вы можете сделать, так это сдвинуть posts= mydb.display();
выше назначения адаптера.
Итак, ваш код выглядит как
posts= mydb.display();
facultyAdapter = new FacultyAdapter(getApplicationContext(), posts);
Теперь при нажатии кнопки «Добавить» наClickListener используйте setMealTotal()
после add()
.
Add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
add();
setMealTotal()
}
});
РЕДАКТИРОВАТЬ
Для обновления вашей общей цены вам необходимо изменить значения вашего количества в FacultyList, а также в БД, в которой вы находитесь сохранение данных корзины. В настоящее время вы обновляете пользовательский интерфейс вручную на адаптере BindViewHolder, что не рекомендуется, поскольку это задача адаптера по обновлению пользовательского интерфейса в соответствии с данными, с которыми он связан. Отметьте Android Room или CursorAdpter с Recyclerview, чтобы легко выполнить эту задачу.
В настоящее время вы можете создать интерфейс для уведомления вашей активности об изменениях в вашей корзине.
interface ICartModification{
void increment(int qty, Faculty faculty)
void decrement(int qty, Faculty faculty)
}
Реализуйте этот интерфейс в CartActivity
@Overrides
void increment(int qty, Faculty faculty){
faculty.setQty(qty)
//update DB here
facultyAdapter.notifyDataSetChanged()
setMealTotal()
}
@Overrides
void decrement(int qty, Faculty faculty){
if(qty<=0)
posts.remove(faculty)
else
faculty.setQty(qty)
//update DB here
facultyAdapter.notifyDataSetChanged()
setMealTotal()
}
и передать ссылку на Activity адаптеру.
facultyAdapter = new FacultyAdapter(this, mydb.display());
Теперь на вашем In c и Dcr вызовите эту функцию обновления следующим образом:
holder.inc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(context instanceof ICartModification){
((ICartModification)context).increment(faculty.getQty()+1, faculty);
}
}
});
holder.dec.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(context instanceof ICartModification){
((ICartModification)context).decrement(faculty.getQty()-1, faculty);
}
}
});