Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Rube
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,079
1

ViewPager, Fragment и SimpleCursorAdapter, обновить соседнюю страницу

17.10.2014, 14:09. Просмотров 1313. Ответов 3
Метки нет (Все метки)

Есть активити с ViewPager, в который подгружается фрагмент, состоящий из ListView.
ListView (с TextView и CheckBox) заполняется из БД через кастомный SimpleCursorAdapter.
На первой странице у меня находится Избранное. На следующих - списки с CheckBoxами.
Так вот, при нажатии CheckBoxа (чекаю запись в БД) на второй странице - этот item должен появиться в Избранном, но когда листаю налево его там нет.
Он появляется только при новом запуске или когда пролистну направо на 3-ю стр. и обратно (это понятно, т.к. ViewPager одновременно грузит только соседние страницы, а 3-ю уже заново).
Как из самого адаптера обновить соседнюю страницу?
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        super.bindView(view, context, cursor);
        
        final int pos = cursor.getPosition();
        final long id = getItemId(pos);
 
        /*************** Установка значений чекбоксы ***************/  
        final CheckBox checkbox = (CheckBox)view.findViewById(R.id.checkBox1);
        if (pageNumber == PAGE_FAVORITES)   
            checkbox.setVisibility(View.GONE);
        else
            checkbox.setChecked(itemChecked.get(cursor.getPosition()));
        /*************** Слушаем чекбоксы ***************/   
        checkbox.setOnClickListener(new OnClickListener() { 
            public void onClick(View v) {           
                itemChecked.set(pos, checkbox.isChecked()); // запоминаю чекбокс                
                db.setCheck(pageNumber, id, checkbox.isChecked()); // меняю значение в БД
                
                notifyDataSetChanged(); // не обновляет           
                callback.setNewVersion(null, null); // не обновляет
                onContentChanged(); // не обновляет              
            }
        });
    }
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2014, 14:09
Ответы с готовыми решениями:

AsyncTask в Fragment и viewPager
У меня есть ViewPager который состоит из двух листающихся экранов, есть код фрагмента который...

Как сделать анимация проявления для Floating внутри Fragment(ViewPager)
Главная активити не содержит ничего, кроме вкладок реализованных при помощи ViewPager и TabLayout....

Drawer Menu + ViewPager: Что лучше - Activity -> Fragments или Fragment -> Fragments
Я новичок в Android. Пишу приложение, в котором: Drawer Меню - в нем (например) пункт 1 -...

Как обновить viewpager или listfragment?
Добрый день! Помогите пожалуйста разобраться в следующем вопросе. У меня есть ViewPager с...

Не обновляется список после добавления item'a на страницу ViewPager?
для добавления item в список используется отдельная активити, сама запись добавляется но при...

3
Gabberr
104 / 104 / 19
Регистрация: 13.10.2009
Сообщений: 405
17.10.2014, 18:43 2
Можно повесить слушатель на первый фрагмент и вызывать у него update при изменении состояния чекбоксов
0
Rube
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,079
17.10.2014, 19:47  [ТС] 3
Gabberr, у меня нет первого фрагмента, если я правильно понимаю, он всего один:
Java
1
2
3
4
5
6
7
8
// ActivityMain.java
...
pager = (ViewPager) findViewById(R.id.pager);
pagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
pager.setAdapter(pagerAdapter);
 
// PageFragment.java
public class PageFragment extends Fragment
А в pager уже формируются странички.
Надо нажав на чекбокс на 2-й стр. добавить/удалить запись на 1-й стр., т.е. как то найти фрагмент.offset(-1) и обновить данные в нем.
0
Rube
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,079
19.10.2014, 15:05  [ТС] 4
Вобщем сделал, правильно или нет не знаю, но все работает.
Java
1
2
3
4
5
6
FragmentManager manager = getFragmentManager();
Fragment fragment =  manager.getFragments().get(0);   
View v = (View) fragment.getView();
ListView listview = (ListView) v.findViewById(R.id.listView1);
...
listview.setAdapter(newAdapter);
0
19.10.2014, 15:05
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2014, 15:05

Обновить страницу
Здравствуйте, возник вопрос, например у меня открыта страница в браузере http://yandex.ru и я...

Обновить страницу
Не могу обновить программно страницу. приходится в ручную. если написать header, то выдает ошибку....

Как обновить страницу
ПРивет)) Как мне одновить страницу например через 10 сек после того как например пхп зайдет в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.