Как очистить 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) Реализовать interfaceBackPressedListener, на ваше 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();
Другие вопросы по тегам