(Can't Delete this question... don't mind wrong question)
I have a public static ArrayList of listeners and in each activity i'm adding a new listener to the list and when i'm iterating to call to each listener in the list no one of the activity gets the remove call, can sombody tell me what am i doing wrong?
(sorry for the poor english...)
Listener MealsListListener.class
public interface MealsListListener {
void onMealAdded(Meal meal, int babyID);
void onMealRemoved(Meal meal);
void onMealChanged(Meal meal);
}
ArrayList MealListListeners.class
public class MealListListeners {
ArrayList<MealsListListener> mealsListListeners = new ArrayList<>();
public MealListListeners() {
}
public void addMealsListListener(MealsListListener mealsListListener) {
this.mealsListListeners.add(mealsListListener);
}
public void onMealAdded(Meal meal, int babyID) {
for (MealsListListener mealsListListener : mealsListListeners) {
mealsListListener.onMealAdded(meal, babyID);
}
}
public void onMealRemoved(Meal meal){
for (MealsListListener mealsListListener : mealsListListeners) {
mealsListListener.onMealChanged(meal);
}
}
public void onMealChanged(Meal meal) {
for (MealsListListener mealsListListener : mealsListListeners) {
mealsListListener.onMealRemoved(meal);
}
}
}
Activity MainActivity.class
public class MainActivity extends AppCompatActivity {
public static MealListListeners mealListListeners = new MealListListeners();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mealListListeners.addMealsListListener(new MealsListListener() {
@Override
public void onMealAdded(Meal meal, int babyID) {
Toast.makeText(getApplicationContext(), "onMealAdded", Toast.LENGTH_SHORT).show();
}
@Override
public void onMealRemoved(Meal meal) {
Toast.makeText(getApplicationContext(), "onMealRemoved", Toast.LENGTH_SHORT).show();
}
@Override
public void onMealChanged(Meal meal) {
Toast.makeText(getApplicationContext(), "onMealChanged", Toast.LENGTH_SHORT).show();
}
});
}
}
a call from dialog in DialogMeal.class
public class DialogMeal extends BottomSheetDialog {
public DialogMeal(@NonNull Context context, Meal meal) {
super(context);
addNewMeal(meal);
saveMealChanges(meal);
removeMealAction(meal);
}
public void addNewMeal(Meal meal) {
MainActivity.mealListListeners.onMealAdded(meal, 0);
}
private void saveMealChanges(Meal meal) {
MainActivity.mealListListeners.onMealChanged(meal);
}
private void removeMealAction(Meal meal) {
MainActivity.mealListListeners.onMealRemoved(meal);
}
}
When handling the event you call the wrong methods on the listender
public void onMealAdded(Meal meal, int babyID) {
for (MealsListListener mealsListListener : mealsListListeners) {
mealsListListener.onMealAdded(meal, babyID); // correct
}
}
public void onMealRemoved(Meal meal){
for (MealsListListener mealsListListener : mealsListListeners) {
mealsListListener.onMealChanged(meal); // should be onMealRemoved
}
}
public void onMealChanged(Meal meal) {
for (MealsListListener mealsListListener : mealsListListeners) {
mealsListListener.onMealRemoved(meal); // should be onMealChanged
}
}