Как очистить ListView на фрагменте при нажатии кнопки "Назад"?
Все данные из этого ListView
предоставляется CursorAdapter
, Всякий раз, когда я нажал кнопку назад и return
к активности, затем нажмите на активность, чтобы начать fragment
, все предыдущие данные все еще там накладываются друг на друга.
4 ответа
Делать public
метод во фрагменте, который очистит ваш список и вызовет этот метод из On его родительской активности onBackPressed
используя экземпляр фрагмента.
1) Создать интерфейс BackPressedListener
:
public interface BackPressedListener {
void onBackPressed();
}
2) В своей деятельности вы можете переопределить onBackPressed()
:
@Override
public void onBackPressed() {
List<Fragment> fragmentList = getSupportFragmentManager().getFragments();
if (fragmentList != null) {
for(Fragment fragment : fragmentList){
if(fragment instanceof BackPressedListener){
((BackPressedListener)fragment).onBackPressed();
}
}
}
}
3) Реализовать interface
BackPressedListener
, на ваше fragment
, Вы бы переопределить onBackPressed
метод в вашем fragment
очисти свой list
содержащий элементы, а затем уведомить adapter
из изменений, как показано ниже:
@Override
public void onBackPressed()
{
arrayList.clear();
adapter.notifyDataSetChanged();
finish();
}
Ты можешь попробовать
try {
arraylist.clear();
listView.removeAllViews();
}catch (Exception e){
}
При возврате к занятию после нажатия кнопки "Назад":
arraylist.clear();
adapter.notifyDataSetChanged();