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

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

Войти
Регистрация
Восстановить пароль
 
lapitsky
0 / 0 / 0
Регистрация: 17.02.2016
Сообщений: 13
#1

Обновление listview - Программирование Android

15.03.2016, 21:30. Просмотров 344. Ответов 9
Метки нет (Все метки)

Добрый день, у меня listview выводится через адаптер. По нажатию на чекбокс, меняется текст в listview. Как обновить listview, чтобы он показал свежие данные?

пытаюсь через adapter.notifyDataSetChanged(), но не могу его вызвать, потому что listener в классе с адаптером. Как быть?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2016, 21:30     Обновление listview
Посмотрите здесь:

ListView обновление - Программирование Android
Пытаюсь запилить органайзер, сделал добавление в базу и вывод в ListView. Но проблема, если добавить запись, то она появится только после...

Обновление ListView - Программирование Android
Доброго времени суток. Недавно столкнулся с такой проблемой. В активити есть ListView, в которое посредством адаптера добавляются...

Обновление ListView - Программирование Android
Есть активити с ListView с записями из БД. Записи добавляются в onCreate() активити. Допустим, удалил я запись из БД через диалоги. ...

Периодическое обновление ListView - Программирование Android
Привет всем! Есть задача, вывести на экран список, данные берутся с сервера, а потом с какой то периодичностью обновлять его с сервера. ...

Обновление фрагмента с ListView в ViewPager - Программирование Android
Есть класс фрагмента, который заполняет адаптер: public class PageFragment extends Fragment implements LoaderCallbacks<Cursor> { ...

Обновление ListView после добавления записи - Программирование Android
Выбираю записи из БД и вывожу их в ListView. В этом же активити есть кнопка добавления записи в БД. После добавления я хочу что б эта...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
15.03.2016, 22:08     Обновление listview #2
Елыпалы, да что ж вы так излагаете. Текст в listview меняется, или должен меняться, но не меняется? Я должен сам догадаться, какой листенер и в каком он классе? По-русски можно написать? Извините, если слишком эмоционально написал.
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 436
15.03.2016, 22:23     Обновление listview #3
Цитата Сообщение от OlegJV Посмотреть сообщение
Елыпалы
Вот ёмко, ничего не добавить.
lapitsky
0 / 0 / 0
Регистрация: 17.02.2016
Сообщений: 13
16.03.2016, 20:12  [ТС]     Обновление listview #4
Извиняюсь, подробнее:
в onCreat
Java
1
2
3
4
 ArrayAdapter<Product> adapter = new BoxAdapter(getApplicationContext());
        ListView lvMain = (ListView) findViewById(R.id.listView);
        lvMain.setAdapter(adapter);
        adapter.notifyDataSetChanged();
Adapter
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
private class BoxAdapter extends ArrayAdapter<Product> {
 
        public BoxAdapter(Context context) {
            super(context, R.layout.list_item, products);
        }
 
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            Product p = getItem(position);
 
            View view = convertView;
 
            if (view == null) {
                view = LayoutInflater.from(getContext())
                        .inflate(R.layout.list_item, parent, false);
            }
            ((TextView) view.findViewById(R.id.tvDescr)).setText(p.title);
            ((TextView) view.findViewById(R.id.tvPrice)).setText(p.text);
            CheckBox cbBuy = (CheckBox) view.findViewById(R.id.cbBox);
            cbBuy.setTag(position);
            cbBuy.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView,
                                             boolean isChecked) {
 
                    if (isChecked) {
                        products.get(position).box = true;
                        products.get(position).title = "Нажато";
 
                        try {
                            // отрываем поток для записи
                            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
                                    openFileOutput(filename, MODE_PRIVATE)));
                            // пишем данные
                            filestring.append(products.get(position).title + "\n");
                            bw.write(filestring.toString());
                            // закрываем поток
                            bw.close();
                            Toast.makeText(getApplicationContext(), "Записан", Toast.LENGTH_SHORT).show();
                            Log.d(TAG, filestring.toString());
                        } catch (Exception e) {
                            e.printStackTrace();
                        }                      
                    }
 
                }
            });
            cbBuy.setChecked(products.get(position).box);
            return view;
        }
    }
В адаптере, в setOnCheckedChangeListener по нажатию на чекбокс идет запись в файл, что был нажат соотвествующий чекбокс и текст напротив чекбокса должен обновится. поменяли значение listview, но на экране ничего не изменилось. как обновлять listview динамично?
надеюсь правильно выразился, я нуб)
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
16.03.2016, 23:57     Обновление listview #5
Как мне это развидеть? Похоже забанят меня на этом форуме.
TigRon4ik
2 / 2 / 0
Регистрация: 10.08.2015
Сообщений: 16
17.03.2016, 09:53     Обновление listview #6
Вы обновляете значение в переменной, но никак не в видимом текствьюве, подумайте кудна нужно поставить эту строку что бы обновилось
Java
1
((TextView) view.findViewById(R.id.tvDescr)).setText(p.title);
Добавлено через 9 часов 31 минуту
а вообще вам нужно обновить массив в адаптере а потом и сам адаптер листвьюве
lapitsky
0 / 0 / 0
Регистрация: 17.02.2016
Сообщений: 13
17.03.2016, 14:47  [ТС]     Обновление listview #7
Код
((TextView) view.findViewById(R.id.tvDescr)).setText(p.title);
Понял, это надо ставить, после того, как значение в объекте поменяли, тоесть после OnCheckedChangeListener.
А как обновить массив адаптера и сам адаптер в листвью?
TigRon4ik
2 / 2 / 0
Регистрация: 10.08.2015
Сообщений: 16
17.03.2016, 16:17     Обновление listview #8
скорее всего бред, но я делаю именно так )) писал от руки
Java
1
ListView.setAdapter(ListView.getAdapter());
lapitsky
0 / 0 / 0
Регистрация: 17.02.2016
Сообщений: 13
17.03.2016, 17:45  [ТС]     Обновление listview #9
я пишу в OnCheckedChangeListener
Java
1
lvMain.setAdapter(lvMain.getAdapter());
и ругается Error:(309, 31) error: cannot find symbol variable lvMain
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2016, 18:41     Обновление listview
Еще ссылки по теме:

Обновление ListView при изменении значений в базе SQLite - Программирование Android
Доброго времени суток господа. У меня такой вопрос. Как лучше сделать обновление данных в ArrayList,а так же занесение данных в базу?? ...

ListView. После добавления кнопки перестал быть доступен сам ListView - Программирование Android
Кастомизировал ListView с помощью нескольких TextView. Но после того, как добавил ImageButton сам список стал недоступен для клика, а...

Listview вывод данных и переход по нажатию на другой Listview SQLite - Программирование Android
Доброго извините за название темы, долго не мог сформировать название, В общем у меня беда с пытаюсь написать программу где первый экран...

Данные из SQlite в ListView, обработка события ListView - Программирование Android
Ребят, есть БД, ListView. Надо при нажатии на строчку ListView вытащить данные int из БД. mList.setOnItemClickListener(new...


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

Или воспользуйтесь поиском по форуму:
TigRon4ik
2 / 2 / 0
Регистрация: 10.08.2015
Сообщений: 16
17.03.2016, 18:41     Обновление listview #10
lvMain должен быть объявлен как паблик, можно весь код? где этот листвъюв
Yandex
Объявления
17.03.2016, 18:41     Обновление listview
Ответ Создать тему
Опции темы

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