У меня есть FragmentPagerAdapter для viewPager. Вначале в нем только один фрагмент. Я хочу динамически добавлять новый фрагмент к адаптеру, когда пользователь перебирает справа налево и динамически удаляет фрагмент, когда пользователь щелкает слева направо. Я пытался использовать эту библиотеку https://github.com/commonsguy/cwac-pager, но в этой библиотеке у нас есть возможность добавить и удалять фрагменты при нажатии кнопки. Я попытался добавить OnPageChangeListener в viewpager, но методы обратного вызова (onPageScrolled и onPageScrollStateChanged) вызываются более одного раза, что приводит к добавлению более одного фрагмента к FragmentPagerAdapter. Поэтому, пожалуйста, проследите, как это сделать.Динамическое добавление и удаление фрагментов из FragmentPagerAdapter
ответ
Я хочу динамически добавлять новый фрагмент к адаптеру, когда пользователь щелкает справа налево и удаляет динамически удаление фрагмента, когда пользователь щелкает слева направо.
AFAIK, который не поддерживается никакими PagerAdadpter
. Это, безусловно, не поддерживается ArrayPagerAdapter
. Страница должна существовать, иначе вы не сможете ее пронести. Вы не можете провести сначала, а затем добавить страницу позже.
Кроме того, я никогда не находил случай использования для вашего предложенного шаблона, который не может быть обработан при наличии страницы быть в адаптере, но не населяющих страницу (то есть, независимо от дорогих работ является то, что вам кажется, пытаются избежать), пока не начнется салфетка.
@ dora: Я думаю, что в вашем случае FragmentStatePagerAdapter поможет вам. Я упомянул о его использовании ниже в соответствии с моим пониманием. Я надеюсь, что это поможет вам принять решение.
Есть два способа реализации ViewPager: • FragmentStatePagerAdapter • FragmentPagerAdapter
FragmentStatePagerAdapter класс потребляет меньше памяти, потому что она разрушает фрагменты, как только они не видны пользователю, сохраняя только сохраненное состояние что фрагмент
FragmentPagerAdapter:, когда количество фрагментов меньше. Но использование AndroidFragmentPagerAdapter для большого количества фрагментов приведет к прерывистому и отстающему UX.
Кол-во страниц придерживается viewPager? Количество элементов, которые будет удерживать любой ViewPager, задается методом setOffscreenPageLimit(). Значение по умолчанию для ограничения за пределами экрана - 3. Это означает, что ViewPager будет отслеживать текущую видимую страницу, одну влево и одну вправо. Количество отслеживаемых страниц всегда сосредоточено вокруг просматриваемой в данный момент страницы.
Пожалуйста, следуйте по этой ссылке код: http://www.truiton.com/2013/05/android-fragmentpageradapter-example/
Я знаю этот пост старый, но я изо всех сил, чтобы понять это, так что я буду отвечать на него в любом случае.
Вы хотите использовать FragmentStatePagerAdapter
и переопределить getItemPosition()
. Создайте список материалов, которые вы хотите передать фрагменту, позвоните по номеру notifyDataSetChanged()
, и все готово!
Вот адаптер:
public class SectionsPagerAdapter extends FragmentStatePagerAdapter {
List<String> mKeyList = new ArrayList<>();
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment (defined as a static inner class below).
return PlaceholderFragment.newInstance(mKeyList.get(position));
}
@Override
public int getCount() {
return mKeyList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return "SCOUT " + (getCount() - position);
}
public void add(int position, String key) {
mKeyList.add(position, key);
notifyDataSetChanged();
}
}
А вот фрагмент:
public static class PlaceholderFragment extends Fragment {
private static final String ARG_SCOUT_KEY = "scout_key";
public static PlaceholderFragment newInstance(String key) {
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle args = new Bundle();
args.putString(ARG_SCOUT_KEY, key);
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.current_scout_fragment, container, false);
//getArguments().getString(ARG_SCOUT_KEY));
return rootView;
}
}
О, боже мой. Спасибо чувак. Вы его сохранили. – sandeepmaaram
О, Боже .. Спасибо, человек нашел это решение после 2 дней. работающ awesome. Большое спасибо. Достигнуто путем расширения FragmentStatePagerAdapter вместо FragmentPagerAdapter – sandeepmaaram
Добавить сейчас легко, когда это случай удаления? –
- 1. Динамическое добавление и удаление фрагментов в ViewPager
- 2. FragmentPagerAdapter удаление фрагментов на приложении резюме
- 3. Динамическое добавление фрагментов из разных источников
- 4. Динамическое добавление и удаление панели
- 5. Динамическое добавление и удаление входов
- 6. Удаление фрагментов из FragmentStatePagerAdapter
- 7. Отправка списка фрагментов в FragmentPagerAdapter
- 8. Динамическое добавление флажков к макетам нескольких фрагментов
- 9. Динамическое добавление/удаление страниц из FragmentStatePagerAdapter
- 10. Динамическое добавление и удаление групповых групп
- 11. Динамическое добавление и удаление списка в tkinter
- 12. Динамическое добавление и удаление строк таблицы - Android
- 13. Динамическое добавление и удаление таблицы строк
- 14. AngularJS Динамическое добавление и удаление HTML
- 15. динамическое добавление и удаление виджетов в PyQt
- 16. Динамическое добавление и удаление слушателей событий
- 17. Динамическое добавление и удаление полей ввода флажка
- 18. Динамическое добавление и удаление просмотров в AsyncTask
- 19. Динамическое добавление и удаление свойства JqGrid
- 20. Динамическое добавление и удаление счетчика из панели инструментов в фрагментах
- 21. Динамическое добавление и удаление элемента из HTML DOM
- 22. Динамическое добавление и удаление строк из ASP.NET GridView
- 23. Android: повторное использование фрагментов ViewPager & FragmentPagerAdapter
- 24. Невозможно сделать FragmentPagerAdapter обновить содержание фрагментов
- 25. Android FragmentPagerAdapter с таким же классом фрагментов
- 26. Управление жизненным циклом фрагментов в FragmentPagerAdapter
- 27. Удаление фрагментов из-за действия
- 28. Удаление фрагментов из списка ListFragment
- 29. динамическое удаление или добавление полей в структуру
- 30. Динамическое добавление/удаление компонентов в JSF2/Primefaces
: я пытаюсь внедрить календарь поэтому, когда пользователь пойло справа налево, он идет на следующей неделе. но есть кнопка на верхней панели просмотра пейджера, которая позволяет пользователю переключать месяцы. Предположим, что этот сценарий, предположим, что пользователь сначала использует месячный коммутатор, чтобы перейти к следующему месяцу (в месяце switch butonclick я пишу viewpager.setCurrentItem (curentposition + 1)), а затем решает перевести просмотрщик на предыдущую неделю. пользователь не сможет вернуться к дате, когда он начал, потому что в задней части есть только один фрейм. Мне нужна: он вернулся, туда, где он начал. – dora
@dora: «Я пытаюсь реализовать календарь, поэтому всякий раз, когда пользователь делает выборку справа налево он отправляется на следующую неделю »-« ViewPager »не подходит для этой роли, поскольку в будущем существует бесконечное количество недель и целых недель в прошлом. – CommonsWare
Мне не нужно переходить на past.all Мне нужно иметь возможность перемещаться в текущее время и в будущем.so, пожалуйста, помогите мне, если есть способ для него – dora