Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 29.12.2013
Сообщений: 39

Использование SimpleAdapter.ViewBinder при заполнении списка из базы данных

30.03.2019, 11:51. Показов 1226. Ответов 7

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожайлуста разобраться с вопросом.

В моём APP есть база данных, и при нажатии на кнопку её строки заношу в (ListView) myList через стандартный (SimpleAdapter) sAdapter. И в (SimpleAdapter.ViewBinder) binder могу задать цвет всем строчкам (R.id.itemTextSumme).

Подскажите пожайлуста как задавать другой цвет R.color.mycolor3 этим строчкам непосредственно при чтении базы при соблюдении какого то условия.

Например:
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
String myString=""+cursor.getString(summeIndex); 
int mySumme =  Integer.parseInt(myString); , и потом не работает !!! 
 
if (mySumme>20)    {
                TextView myText = (TextView) view.findViewById(R.id.itemTextSumme);
                myText.setBackgroundResource(R.color.mycolor3);
            }
 
// onCreate
myList = (ListView) findViewById(R.id.list_View);
ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
Map<String, Object> m;
String[] from = {DATE_TEXT,SUMME_TEXT,IDNR_TEXT};
int[] to = {R.id.itemTextDate,R.id.itemTextSumme,R.id.itemTextIdNr};
SimpleAdapter sAdapter = new SimpleAdapter(this,data, R.layout.item, from, to);
 
SimpleAdapter.ViewBinder binder = new SimpleAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Object object, String value) {
    if (view.equals((TextView) view.findViewById(R.id.itemTextSumme)))    {
                TextView myText = (TextView) view.findViewById(R.id.itemTextSumme);
                myText.setBackgroundResource(R.color.mycolor2);
            }
                return false;
            }
            };
 
sAapter.setViewBinder(binder);
myList.setAdapter(sAdapter);
 
// onClick
// при нажатии на кнопку у меня всё заносится как надо.
m.clear();
data.clear();
sApater.notifyDataSetChanged();
//….
          if (cursor.moveToFirst()) {
           do {
            m = new HashMap<String, Object>();
             m.put(DATE_TEXT, cursor.getString(datumIndex));
             m.put(SUMME_TEXT,  cursor.getString(summeIndex));
             m.put(IDNR_TEXT, "" + cursor.getInt(idIndex));
             data.add(m);
             } while (cursor.moveToNext());
            }
sAdpater.notifyDataSetChanged();
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.03.2019, 11:51
Ответы с готовыми решениями:

Распределение данных по разным таблицам в exel при заполнении общей базы данных
При создании базы данных по оборотам компаний и формировании отчета по каждой из них, я не знаю как правильно сделать так, чтобы при...

Выдает ошибку при заполнении Базы данных через Delphi
База данных - mysql dbforge Пытаюсь ввести данные в базу, но выдает эту страшную ошибку. С чем она связана? Заранее благодарю

Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s.
всем доброго времени суток! есть у меня класс bd, массив элементов этого класса table, а вот сам метод: int copyTable(int a, int b) {...

7
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
30.03.2019, 15:18
Создать свой адаптер и передавать цвет в конструктор или методом.
0
1 / 1 / 0
Регистрация: 29.12.2013
Сообщений: 39
30.03.2019, 18:20  [ТС]
Я только начал программировать и ваш ответ мне выглядит очень сложным вариантом. А что разве нельзя использовать готовый SimpleAdapter и просто в (button.onClick) добавить стандартный sAapter.setViewBinder(binder) и поменять цвет строчки?
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
30.03.2019, 21:35
Незнакомое и непривычное - не значит сложное.
0
1 / 1 / 0
Регистрация: 29.12.2013
Сообщений: 39
30.03.2019, 22:45  [ТС]
Так вот в всё нормальо работает, а тоже самое сделать через кнопку чтение поочерёдно всех строк из базы и некоторые помечать не получается.

Java
1
2
3
4
5
6
7
8
9
10
myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
                myString = ((TextView) view.findViewById(R.id.itemTextSumme)).getText().toString();
                int mySumme = Integer.parseInt(myString);
                if (mySumme > 20) {
                    TextView myText = (TextView) view.findViewById(R.id.itemTextSumme);
                    myText.setBackgroundResource(R.color.mycolor3);
                }
            }
});
Помогите пожайлуста нарисуйте пару строк кода а не разлогольствуйте где и как, я уже больше ндели ищу везде и не получается.
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
31.03.2019, 00:24
Цитата Сообщение от Bronzel Посмотреть сообщение
больше ндели ищу
Первая ссылка: https://www.fandroid.info/prim... v-android/
1
1 / 1 / 0
Регистрация: 29.12.2013
Сообщений: 39
01.04.2019, 00:42  [ТС]
Java
1
2
3
4
5
6
a = sAdapter.getCount();
for (i = 0; i < a; i++) {
TextView summeTextView = (TextView) myListView.getChildAt(i).findViewById(R.id.itemTextSumme);
myString = myString + summeTextView.getText().toString();
Toast.makeText(MainActivity.this,myString, Toast.LENGTH_LONG).show();
}
так ведь можно находить все нужные сточки и читать их а как их изменить пока не нашёл может всёже кто подскажет пожайлуста.
0
1 / 1 / 0
Регистрация: 29.12.2013
Сообщений: 39
15.04.2019, 23:56  [ТС]
Всётаки нашёл как с помощью стандартного ViewBinder можно изменять цвет в зависимости от состояния. Подскажите пожайлуста как менять ещё и цвет другого TextView (находящегося в томже пакете) в завиимости от сотояния первого.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    SimpleAdapter.ViewBinder binder = new SimpleAdapter.ViewBinder() {
    @Override
    public boolean setViewValue(View view, Object data, String textRepresentation) {
 
            if (view.getId() == R.id.itemTextSumme) {
                   TextView myTextSumme = (TextView) view.findViewById(R.id.itemTextSumme);
                    if (((Integer) data)>20) {
                           myTextSumme.setBackgroundResource(R.color.mycolor2);
 
                           //Если засовываю эту строчку то вылетает приложение.
                           //TextView myTextFarbe = (TextView) view.findViewById(R.id.itemTextFarbe);
                           //myTextFarbe.setBackgroundResource(R.color.mycolor2);
                    }else {
                           myTextSumme.setBackgroundResource(R.color.mycolor3);
                           //TextView myTextFarbe = (TextView) view.findViewById(R.id.itemTextFarbe);
                           //myTextFarbe.setBackgroundResource(R.color.mycolor§);
                   }
            return true;
            }
       
            return false;
        }
  }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.04.2019, 23:56
Помогаю со студенческими работами здесь

Ошибка при заполнении двусвязного списка
При выполнении данного алгоритма, выдает ошибку. Буду рад любой помощи struct tree { int info; tree *right; tree...

Замена названий полей их кодами при заполнении базы
В общем столкнулся с проблемой. Есть две таблицы Схемы_измерения и Участки. В схемах измерения нужно добавить № участка, но так как база...

Работа с первичным ключём при заполнении базы в Делфи
Ситуация такая. В базе в каждой таблице есть первичный ключ, когда я в делфи в форме заполняю все остальные поля в таблице, я не хочу...

Выбор пункта из выпадающего списка при заполнении формы на сайте
Подскажите пожалуйста как осуществить выбор пункта из выпадающего списка через компонент webBrowser тоесть программа на сайте и...

Создание простейшего прелоадера при заполнении списка из фонового потока
Доброго всем времени суток! Задача, как мне кажется, для ну уж совсем новичков, но я, по непонятной мне причине, не смог найти вообще...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru