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

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

17.10.2014, 14:09. Просмотров 1178. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2014, 14:09
Ответы с готовыми решениями:

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

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

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

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

Обновление fragment из другого fragment
Добрый вечер всем!! Подскажите пожалуйста как обновить один фрагмент из другого...

3
Gabberr
104 / 104 / 19
Регистрация: 13.10.2009
Сообщений: 404
17.10.2014, 18:43 2
Можно повесить слушатель на первый фрагмент и вызывать у него update при изменении состояния чекбоксов
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
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
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2014, 15:05

SimpleCursorAdapter
Почему то ругаетсяв строке new SimpleCursorAdapter()... Что не так делаю? ...

SimpleCursorAdapter не хочет работать
Добрый день. Вобщем такая ситация. Нажимаю на MainActivity кнопку и по интенту...

Фильтрация в кастомном SimpleCursorAdapter
Здравствуйте. вот Активити public class MainActivity extends...


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

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

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