1

Я создал пользовательский listview с baseadapter. Элементы списка содержат флажок для purpouse multichoice. Я добавил функцию в базовый адаптер, который возвратил позиции выбранных элементов.Соберите данные из нескольких фрагментов в viewpager

Чтобы каталогизировать список, я попытался поместить список в Фрагменты с помощью Viewpager с FragmentPagerAdapter. Теперь у каждого фрагмента есть свой список многозадачности. Пользователь должен иметь возможность прокручивать между страницами и выбирать элементы, а затем, прежде чем переходить к next Activity Мне нужно собрать все позиции выбранного элемента в двумерный список или массив.

MyProblem: Кажется, что Viewpager поддерживает только две дополнительные страницы в памяти по одной стороне текущей страницы. Если мой viewpager находится в углу или имеет более 3 страниц, я не могу собрать список выбранных элементов в некоторые из фрагментов.

Буду признателен за любую помощь по этому вопросу.

ответ

0

Имейте каждый Fragment, чтобы сохранить выбранные элементы в SharedPreferences, когда пользователь переместится от него. Позже ваш другой Activity доставит предметы от SharedPreferences.

int len = listView.getCount(); 
SparseBooleanArray checked = listView.getCheckedItemPositions(); 
for (int i = 0; i < len; i++) 
{ 
    if (checked.get(i)) 
    { 
     // Get the item 
     // Deal with the checked item. 
     // ex: add to ArrayList 
     arrayList.add(item); 
    } 
} 

Set<String> set = new HashSet<String>(); 
set.addAll(arrayList); 
mSharedPreferences.edit().putStringSet("key", set).apply(); 
+0

wont the pagechangelistener будет стрелять из событий каждый раз, когда я сажусь? – Deepak

+0

@Deepak Я бы поместил эту логику в метод 'onPause()' каждого 'Fragment', а не в прослушиватель смены страницы. Тем не менее, я не знаю структуру вашего приложения. – pez