Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
DrankUser
0 / 2 / 3
Регистрация: 29.01.2017
Сообщений: 83
Завершенные тесты: 2
1

Доступ к содержимому элементов кастомного ListView

25.03.2017, 17:56. Просмотров 274. Ответов 5

Есть у меня ListView
Есть кастомный ListAdapter, который делает элементы аля "TextView - EditText"
В общем, тут всё круто, всё работает. На EditText стоит TextWatcher, который записывает значения.

А ещё есть на активности кнопка, по нажатии на которую с записанными в массив значениями происходят чудеса, но это другая история.

Проблема в том, что при оставлении EditText пустым программа ругалась трехэтажным, так как значение должно быть Double.
Я сделал в TextWatcher вот такой костыль:
Java
1
2
3
4
5
6
7
8
9
10
11
@Override
            public void afterTextChanged(Editable s) {
                if (!holder.editText.getText().toString().equals(""))
                {
                    holder.editText.getBackground().mutate().setColorFilter(ctx.getResources().getColor(R.color.colorAccent), PorterDuff.Mode.SRC_ATOP);
                    objects[holder.pos].value = Double.parseDouble(holder.editText.getText().toString());
                }
                else {
                    holder.editText.getBackground().mutate().setColorFilter(ctx.getResources().getColor(R.color.error), PorterDuff.Mode.SRC_ATOP);
                }
            }
Но то, что значение попросту не записывается, да и цвет меняется на опасно-красный, никак не влияет на выполнение кода по нажатию кнопочки. Он просто берёт значение которое было в массиве до изменения EditText, в чём нет ничего удивительного.

Тогда я решил добавить что-то типа маяка, сообщающего кнопке, что есть проблемы со вводом, и работать пока не надо
Java
1
2
3
4
5
6
7
8
9
10
11
12
public void afterTextChanged(Editable s) {
    if (!holder.editText.getText().toString().equals(""))
    {
        MainActivity.wrongInputState = false;
        holder.editText.getBackground().mutate().setColorFilter(ctx.getResources().getColor(R.color.colorAccent), PorterDuff.Mode.SRC_ATOP);
        objects[holder.pos].value = Double.parseDouble(holder.editText.getText().toString());
    }
    else {
        MainActivity.wrongInputState = true;
        holder.editText.getBackground().mutate().setColorFilter(ctx.getResources().getColor(R.color.error), PorterDuff.Mode.SRC_ATOP);
    }
}
Ну, я сразу понял, что это говнокод и нифига не работает, ибо это же список, и если я одно поле оставлю пустым, маяк станет true и всё вроде бы хорошо.
А как только я начну редактировать новый элемент маяк предательски скажет "ошибок нет", хотя предыдущий элемент пуст.

Тогда я начал думать, как при нажатии кнопки проверить сразу весь список на наличие "красных" EditText.
Гугл о такой вундервафле ничего не знает, тут поиск по тегам тоже ничего не дал.

Может кто в курсе как вообще работает ListView и адаптер, и есть ли там вообще возможность получить доступ к состоянию содержимого элементов?

Добавлено через 3 часа 5 минут
Задолбался искать ответ и решил попробовать подобное сделать просто созданием массива View и вывода этого массива на ScrollActivity.
Результат на лицо! Ни тебе проблем с заполнением EditText, ни тебе проблем с фокусом, никаких костылей.

Но всё же если кто-что знает по теме выше, то прошу ответить, ведь хоть я и отступил, битва не окончена.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2017, 17:56
Ответы с готовыми решениями:

Получить доступ к TextView внутри ListView
Привет, форумчане! Сначала кратко(потребуется код выложу, просто нужно понять...

Получить доступ к ImageView в одном конкретном элементе ListView
Есть layout элемента ListView <?xml version="1.0" encoding="utf-8"?> ...

Удаление данных из кастомного ArrayList
Всем привет, тут столкнулся с такой проблемой, я создаю динамически елементы ...

Динамическое создание кастомного layout
Всем здрасте. Столкнулся с такой проблемой. Стоит задача по нажатию на...

Создание кастомного календаря с динамическими данными
Раз с одной проблемой мне тут помогли, значит попробую еще раз может и тут мне...

5
Pablito
2721 / 2164 / 735
Регистрация: 12.05.2014
Сообщений: 7,571
Завершенные тесты: 1
26.03.2017, 10:53 2
много букв
норм. разрабы давно уже используют RecyclerView вместо ListView

если тебе кто-то будет тут рассказывать что ListView - это норм и работает ты должен сразу понимать, он остановился в развитии отстал от жизни минимум на год
0
vxg
Модератор
3251 / 2051 / 323
Регистрация: 13.01.2012
Сообщений: 7,944
27.03.2017, 09:33 3
Паблито, ну я использую ListView и че ) ?

Добавлено через 27 секунд
ах, да, еще я не использую фрагменты )

Добавлено через 4 минуты
DrankUser, вы всегда можете получить доступ к содержимому элементов - разве не ссылки на эти элементы вы храните в холдере?
0
Pablito
2721 / 2164 / 735
Регистрация: 12.05.2014
Сообщений: 7,571
Завершенные тесты: 1
27.03.2017, 10:57 4
Цитата Сообщение от vxg Посмотреть сообщение
ну я использую ListView и че
так а что мне нужно ответить? я не знаю что
Цитата Сообщение от vxg Посмотреть сообщение
ах, да, еще я не использую фрагменты
я бы тоже их не использовал, но иногда просто приходится что-бы не быть белой вороной в проекте
0
ExFau$t
27.03.2017, 13:13
  #5

Не по теме:

Приятно знать, что есть ещё олдскул пипл, разделяющих моё ленивое мировоззрение без фрагментов.

0
vxg
Модератор
3251 / 2051 / 323
Регистрация: 13.01.2012
Сообщений: 7,944
27.03.2017, 13:27 6
Цитата Сообщение от Паблито Посмотреть сообщение
так а что мне нужно ответить?
очевидно надо либо повторить
Цитата Сообщение от Паблито Посмотреть сообщение
остановился в развитии отстал от жизни минимум на год
либо сказать
Цитата Сообщение от Паблито Посмотреть сообщение
иногда просто приходится
0
27.03.2017, 13:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2017, 13:27

NoClassDefFoundError при запуске кастомного видеоплеера
Всем привет! Являюсь iOS-разработчиком с некогда небольшим Android-прошлым....

Добавление элементов в listview из БД
Здравствуйте. У меня не выходит выбросить из списка одинаковые элементы. Я из...

Прорисовка элементов в ListView
Доброго дня. Необходимо сделать свой список с своим View, нашёл статью и...


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

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

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