У меня есть ViewPager, чьи getCount();
изменяются в зависимости от списка объектов, переданных через конструктор.Используя adapter.notifyDataSetChanged();
, я ожидаю увидеть еще одну страницу.Кажется, это работает правильно, но когда я удаляю элемент из упомянутого списка (используемый для вычисления getCount()
), ViewPager удаляет страницу только успешно, если она находится вне offsetLimit.
Пример : у меня есть две страницы, и через кнопку я удаляю элемент из списка.Затем я звоню notifyDataSetChanged()
и ожидаю, что у меня останется только одна страница, но ... вторая "Страница" все еще там, даже если я не могу провести по ней !!!!
Как я могу обойти это? Я хочу избежать повторного создания всего ViewPager с фрагментами.
КОД (упрощение)
public class Adapter extends FragmentStatePagerAdapter {
private final List<String> list;
public Adapter(FragmentManager fragmentManager, List<String> list) {
super(fragmentManager);
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
}
И это внутри Задания:
adapter = new Adapter(getSupportFragmentManager(), items);
final ViewPager pager = findViewById(R.id.pager);
pager.setAdapter(adapter);
findViewById(R.id.add).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
items.add("test");
adapter.notifyDataSetChanged();
}
});
findViewById(R.id.remove).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
items.remove(items.size() - 1);
adapter.notifyDataSetChanged();
}
});
С этим я могу добавлять предметыот Activity
и обновить де адаптер (он работает) и удалить ... его не работает.Что я могу сделать?