У меня есть ListView во фрагменте, который заполняется при запуске приложения. Я помещаю ParcelableArrayList в Bundle в своем методе newInstance и возвращаю его обратно в свой OnCreateView после передачи ArrayList в метод newInstance в моей Activity (то есть данных, считанных из базы данных SQLite).
This часть работает, так как я правильно отображаю свои данные в своем фрагменте.
Я реализовал кнопку, которая удаляет все данные из таблицы, и теперь я хотел бы обновить свое представление после очистки таблицы. Кнопка «удалить все» обрабатывается в моей основной деятельности, когда я вызываю обработчик базы данных, чтобы очистить таблицу.
Каков наилучший способ сделать это? Вот части кода, которые кажутся мне актуальными:
Мой класс фрагмента:
public class MainFragment extends Fragment {
public static final String RECETTES_KEY = "recettes_key";
private List<Recette> mRecettes;
private ListView mListView;
public MainFragment() {
// Required empty public constructor
}
public static MainFragment newInstance(List<Recette> r) {
MainFragment fragment = new MainFragment();
Bundle bundle = new Bundle();
bundle.putParcelableArrayList(RECETTES_KEY, (ArrayList<? extends Parcelable>) r);
fragment.setArguments(bundle);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mRecettes = getArguments().getParcelableArrayList(RECETTES_KEY);
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_main, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
configureListView();
}
// Configure ListView
private void configureListView(){
this.mListView = getView().findViewById(R.id.activity_main_list_view);
RecetteAdapter adapter = new RecetteAdapter(getContext(), mRecettes);
mListView.setAdapter(adapter);
}
}
Соответствующие части из моей основной деятельности: Это в моем методе OnCreate:
mDatabaseHandler = new DatabaseHandler(this);
mRecettes = mDatabaseHandler.readRecettes();
mDatabaseHandler.close();
Это метод, который я использую для показа фрагмента:
if (this.mMainFragment == null) this.mMainFragment = MainFragment.newInstance(mRecettes);
this.startTransactionFragment(this.mMainFragment);
Дайте мне знать, если я добавлю больше своего кода, это мой первый пост :) Lucile