Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
#1

ViewPager, Fragment и SimpleCursorAdapter, обновить соседнюю страницу - Программирование Android

17.10.2014, 14:09. Просмотров 988. Ответов 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(); // не обновляет             
            }
        });
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2014, 14:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ViewPager, Fragment и SimpleCursorAdapter, обновить соседнюю страницу (Программирование Android):

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

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

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

Обновление fragment из другого fragment - Программирование Android
Добрый вечер всем!! Подскажите пожалуйста как обновить один фрагмент из другого (а именно TextView и ArrayAdapter)?

SimpleCursorAdapter - Программирование Android
Почему то ругаетсяв строке new SimpleCursorAdapter()... Что не так делаю? Cursor cursor = db.query("PEOPLE", new String {"_id",...

Получение данных с SimpleCursorAdapter - Программирование Android
Скопировал себе в приложение пример из библиотеки шерлок, с табами. оно работает хорошо, но мне нужно переделать ее под свои нужды. И во...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 403
17.10.2014, 18:43 #2
Можно повесить слушатель на первый фрагмент и вызывать у него update при изменении состояния чекбоксов
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
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) и обновить данные в нем.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
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);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2014, 15:05
Привет! Вот еще темы с ответами:

Фильтрация в кастомном SimpleCursorAdapter - Программирование Android
Здравствуйте. вот Активити public class MainActivity extends AppCompatActivity { SQLiteDatabase database; ...

SimpleCursorAdapter не хочет работать - Программирование Android
Добрый день. Вобщем такая ситация. Нажимаю на MainActivity кнопку и по интенту грузится вторая актвити ее код: public class...

Прикрутить RadioGroup к ListView(SimpleCursorAdapter) - Программирование Android
Не могу понять как реализовать одиночный выбор из списка: Сейчас выводит список компаний, где я могу сделать множественный выбор, а мне...

Каков новый аналог устаревшего SimpleCursorAdapter? - Программирование Android
SimpleCursorAdapter устарел уже(deprecated) что лучше использовать вместо него какой есть более новый аналог?? Добавлено через 2...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.10.2014, 15:05
Ответ Создать тему
Опции темы

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