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.