Android notifyDataSetChanged behave differently

Viewed 11

I have two different applications, that update a list in both cases.

App1

addButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dataList.add("NEW CITY");
                cityAdapter.notifyDataSetChanged();
            }
        });

Here, my floating action button, update the list with const string (as test input). If I don't use notifyDataSetChanged the list will not show the 'NEW CITY' text.

App2 This one is a bit more complex than the App1, because now use a fragment to add/edit city.

The two listeners looks like this.

addCityButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new AddCityFragment().show(getSupportFragmentManager(),"ADD_CITY");
            }
        });

cityList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
                City clickedCity = cityAdapter.getItem(i);
                AddCityFragment.newInstance(clickedCity, i).show(getSupportFragmentManager(),
                        "EDIT_CITY");
                return false;
            }
        });

I have two methods that implement the logic which are invoked when the fragment is loaded.

@Override
public void onOkPressListener(City newCity) {
    dataList.add(newCity);
}

@Override
public void onEditPressListener(City editCity, int index) {
    City currentCity = dataList.get(index);
    currentCity.setCity(editCity.getCity());
    currentCity.setProvince(editCity.getProvince());
}

For some reason, the list updates (add/edit) even though I didn't call notifyDataSetChanged in each method. Is the list refreshed somehow when the fragment is closed? I feel like I ignore some sort of a Android activity lifecycle method here.

0 Answers
Related