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

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

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

Обновление данных адаптера - Программирование Android

20.03.2015, 07:39. Просмотров 682. Ответов 11
Метки нет (Все метки)

Здравствуйте. Помогите, кто сталкивался. Есть список, где в зависимости от значения свойства отображенного объекта подставляется лейаут:
Java
1
2
3
4
5
6
    LayoutInflater inflater = ((Activity)context).getLayoutInflater();
    if (app.isRead == 0) {
        row = inflater.inflate(layoutResID, parent, false);
    } else {
        row = inflater.inflate(layoutResID_is_read, parent, false);
    }
В адаптере навешаны обработчики на кнопки. По нажатию на одну из них у app.isRead устанавливается в значение 1 - и надо "перерисовать" список. Как можно перерисовать список из обработчика адаптера??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2015, 07:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обновление данных адаптера (Программирование Android):

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

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

Обновление данных в activity - Программирование Android
Всем доброй ночи! Как обновить данные в активити при возврате из диалога или из другой активити, т.е. когда фокус возвращается на...

Обновление Базы данных - Программирование Android
Есть база данных которую просматриваю в Активити1, сделал все работает. При нажатии на кнопку перехожу в Ативити2 где вижу последнюю...

ExpandableListView обновление данных - Программирование Android
Каким образом мне обновить его? Чтобы я изменил данные массива и обновил. Объявили переменные public class MainActivity ...

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

11
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
20.03.2015, 08:42 #2
Привет. Перерисовать список из обработчика адаптера можно notifyDataSetChanged().
0
RomanXXI
0 / 0 / 0
Регистрация: 20.03.2015
Сообщений: 9
20.03.2015, 10:32  [ТС] #3
Привет. А вот и не работает. Этот метод перерисовывает отображаемые данные. У меня изменились данные, которые не отображаются. В адаптере в методе getView на основании значения этих данных выбирается лейаут. notifyDataSetChanged() - метод getView не вызывает заново.
0
YuraAAA
1576 / 1317 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
20.03.2015, 10:49 #4
RomanXXI, вызывает только для видимых элементов. Так как адаптер кэширует остальные элементы списка.
0
RomanXXI
0 / 0 / 0
Регистрация: 20.03.2015
Сообщений: 9
20.03.2015, 10:53  [ТС] #5
И как тогда можно такое сделать?
0
YuraAAA
1576 / 1317 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
20.03.2015, 11:55 #6
RomanXXI, Вам уже ответил Rube. notifyDataSetChanged(). Видимые элементы перерисуются сразу. Для остальных вызовется getView когда они станут видны.
0
RomanXXI
0 / 0 / 0
Регистрация: 20.03.2015
Сообщений: 9
20.03.2015, 12:46  [ТС] #7
Я наверно как-то неправильно спросил. Есть свойство, которое никогда не будет видно (true, false). Обработчик нажатия на кнопку (в классе Адаптера) меняет это свойство. А в зависимости от значения этого свойства в getView меняется лейаут выводимой строки. Т.е. пример, я нажал на кнопку в строке, строка была синей, стала желтой. Вот такое как?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
20.03.2015, 12:59 #8
Код адаптера выложи, мы тут должны догадываться что за адаптер?
Вот так примерно должно быть:
Java
1
textView.setTextColor(position == 1 ? yellow : blue);
0
RomanXXI
0 / 0 / 0
Регистрация: 20.03.2015
Сообщений: 9
20.03.2015, 13:05  [ТС] #9
Он большой. Но суть щас выложу:
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
       @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        
        NewsHolder holder = null;
        View row = convertView;
        holder = null;
        
        final Application app = (Application) data.get(position);  // Здесь данные из БД (где лежит "невидимое" свойство = "isRead"
        
        if(row == null){
            
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
// ****
            if (app.isRead == 0) {     // А это проверка на это свойство и разные Лейауты
                row = inflater.inflate(layoutResID, parent, false);
            } else {
                row = inflater.inflate(layoutResID_is_read, parent, false);
            }
// ****
            
            holder = new NewsHolder();
            
            holder.number_app = (TextView) row.findViewById(R.id.Number_sw);  // Здесь видимое свойство
            
                holder.btn_pr = (ImageButton) row.findViewById(R.id.img_ok);  
            
            row.setTag(holder);         
        } else {
            holder = (NewsHolder)row.getTag();
        }
        }
 
 
    static class NewsHolder{    // статический класс - набор свойств     
        TextView number_app;
        ImageButton btn_ok;
    }
 
 
        holder.btn_ok.setOnClickListener(new View.OnClickListener() {           
            @Override
            public void onClick(View v) {
                ..........................
                                // А здесь изменим свойство isRead в БД, как перерисовать
            }
        });
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
20.03.2015, 14:17 #10
Мешанина какая-то, глаза сломать можно, теги jawa надо использовать и отступы.
0
RomanXXI
0 / 0 / 0
Регистрация: 20.03.2015
Сообщений: 9
20.03.2015, 14:55  [ТС] #11
Да я первый раз ((( Где это??
0
RomanXXI
0 / 0 / 0
Регистрация: 20.03.2015
Сообщений: 9
09.04.2015, 12:18  [ТС] #12
Пожалуй сделаю up
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2015, 12:18
Привет! Вот еще темы с ответами:

Обновление данных в ArrayAdapter - Программирование Android
Добрый день. Есть созданный ArrayAdapter. Он добавляется в listView, при достижении конца списка происходит получение информации и...

SQLite обновление базы данных - Программирование Android
Всем привет. Использую базу данных в приложении. При обновлении программы нужно обновить базу данных в том числе, база данных хранится...

Обновление базы данных вручную - Программирование Android
Бьюсь я над проблемой изменения значений в БД ( http://www.cyberforum.ru/android-dev/thread1805861.html ). Решил посмотреть что именно...

Обновление базы данных sqlite - Программирование Android
Уже который день бьюсь никак не выходит Подскажите, что я делаю неверно у меня есть созданная база данных MyDb, в ней таблица status ...


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

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

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