биндер,адаптер,листвью и массив данных... давайте попорядку

Интерфейс, диалоги, темы, стили, меню
парень
Сообщения: 223
Зарегистрирован: 30 мар 2013, 22:52

биндер,адаптер,листвью и массив данных... давайте попорядку

Сообщение парень » 22 окт 2013, 04:05

есть листвью, с адаптером симплеадаптер
есть свойбиндер (для того чтобы первому элементу задать один фон, последнему другой)
есть эллемент листвью ввиде отдельного файла структура такая:
<LinearLayout (gorizontal)>
<LinearLayout > <imageview></linearlayout>
<linearLayout> <textview></linearlayout>

Задача такая чтобы в <textView> попадали данные из базы ввиде: сумма и валюта. их может быть одна запись, а может и пять, цвет должен быть в зависимости от баланса (красный или зеленый).
примерно так:
первый эллемент списка:
1000 RUB
-500 USD
128 EUR
Второй:
5000 RUB
третий....

я вижу такое решение:

нам нужно в адаптере передавать не просто текст или цифру в биндер, а список данных желательно map<String,Integer>, только как мне это сделать? - передать то вроде получается, как с ними в биндере работать? в 50 уроке все сжато описано. Из обьекта в цифру или строку я данные получаю легко. А как мне получить map?


голова отключается. ушел спать. 5 часов просидел за "этим"...

скажите мне что есть решение проще и ссылку если сталкивались,знаете...


и еще один вопрос - как лучше реализовать наполнение поля с цифрами? программно добавлять каждый эллемент (если есть) или еще один список без прокрутки(если есть такой)...
Мой первенец: MyMoney. Менеджер расходов

Бьем рекорды русских топов :)

Могу ответить на любые вопросы по маркетингу и развитию.

Аватара пользователя
anber
Сообщения: 584
Зарегистрирован: 10 июн 2013, 15:05
Откуда: UA

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение anber » 22 окт 2013, 11:54

Используй вместо симплеадаптер класс наследник от BaseAdapter.
В конструктор ему передавай список Map или любых других классов которые тебе нужны.
На вскидку будет выглядеть так:

Код: Выделить всё

public abstract class CustomListAdapter extends BaseAdapter {

  private List<Map> itemsList;
  private LayoutInflater inflater;

  public CustomListAdapter(Context context, List<Map> itemsList) {
    inflater = LayoutInflater.from(context);
  }

  @Override
  public int getCount() {
    return itemsList.size();
  }

  @Override
  public Map getItem(int i) {
    return itemsList.get(i);
  }

  @Override
  public long getItemId(int i) {
    return i;
  }

  @Override
  public View getView(final int position, View view, ViewGroup viewGroup) {
    if (view == null) {
      view = inflater.inflate(R.layout.your_layout, null);
    }
    // instantiateView...
    return view;
  }
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение Foenix » 22 окт 2013, 13:10

не понимаю, почему если используешь бд, то не использовать курсорадаптер, сразу выбирая в запрос то, что нужно - обе колонки, а потом точно так же переопределить гетвью, чтобы раскрасить? Получится гораздо проще, а не городуха из кучи кубиков.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

парень
Сообщения: 223
Зарегистрирован: 30 мар 2013, 22:52

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение парень » 22 окт 2013, 16:16

не знаю меняет ли чтото, но у меня структура такая:
есть база с данными из которой наполняется листвью (картинка, текст, баланас)
у каждой строки базы есть своя база с содержанием баланса в виде (id, valuta, balans) - эти данные и надо поместить в итем листвью в контейнер "баланс".

сори если криво объяснил...
Мой первенец: MyMoney. Менеджер расходов

Бьем рекорды русских топов :)

Могу ответить на любые вопросы по маркетингу и развитию.

парень
Сообщения: 223
Зарегистрирован: 30 мар 2013, 22:52

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение парень » 22 окт 2013, 16:28

вопрос такой: можно в этот контейнер сделать еще один листвью без обработки и прокрутки?
Мой первенец: MyMoney. Менеджер расходов

Бьем рекорды русских топов :)

Могу ответить на любые вопросы по маркетингу и развитию.

парень
Сообщения: 223
Зарегистрирован: 30 мар 2013, 22:52

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение парень » 22 окт 2013, 16:30

anber писал(а): В конструктор ему передавай список Map или любых других классов которые тебе нужны.
map я передаю и так как у меня сделано в биндер. А вот как в биндере извлечь из Object'a map мой и как с ним работать )))) глупый вопрос, да ? )))
Мой первенец: MyMoney. Менеджер расходов

Бьем рекорды русских топов :)

Могу ответить на любые вопросы по маркетингу и развитию.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение rezak90 » 22 окт 2013, 16:45

парень писал(а):у каждой строки базы есть своя база
Если это то как здесь написано это пздц (sorry).
R.id.team
Политика на форуме запрещена

парень
Сообщения: 223
Зарегистрирован: 30 мар 2013, 22:52

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение парень » 22 окт 2013, 17:54

rezak90 писал(а):
парень писал(а):у каждой строки базы есть своя база
Если это то как здесь написано это пздц (sorry).
обьясни почему пздц?

мне нужно хранить около 10 строк данных (id(integer), name(String), image(integer)) и у каждой строки есть еще "баланс" - ввиде "сумма"-"валюта". их может быть как 1 строка, так и 10. (обычно будет 1-3).

поэтому есть таблица table (id(integer), name(String), image(integer)).
и таблицЫ table_id(где id это привязка к первой таблице к конкретной строке)

размножение таблиц возможно только пользователем. программно при удалении строки в table с id=5(например), тут же удаляется table_5 и т.д.

это на корню не верная реализация? просто не придумал как лучше хранить такую инфу. :?
Мой первенец: MyMoney. Менеджер расходов

Бьем рекорды русских топов :)

Могу ответить на любые вопросы по маркетингу и развитию.

парень
Сообщения: 223
Зарегистрирован: 30 мар 2013, 22:52

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение парень » 22 окт 2013, 18:10

или может сделать тогда одну базу id,name,image,bal1,val1,bal2,val2,bal3,val3,bal4,val4,bal5,val5 и т.д. - до 10 например. и сделать ограничение на не более 10 валют.
Мой первенец: MyMoney. Менеджер расходов

Бьем рекорды русских топов :)

Могу ответить на любые вопросы по маркетингу и развитию.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение rezak90 » 22 окт 2013, 18:39

я лучше дам слово тёте Инне, она более литературно расскажет что да как =)
P.S. я о миссис Foenix
R.id.team
Политика на форуме запрещена

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение Foenix » 22 окт 2013, 20:18

парень писал(а):или может сделать тогда одну базу id,name,image,bal1,val1,bal2,val2,bal3,val3,bal4,val4,bal5,val5 и т.д. - до 10 например. и сделать ограничение на не более 10 валют.
никогда так не делай
не знаю меняет ли чтото, но у меня структура такая:
есть база с данными из которой наполняется листвью (картинка, текст, баланас)
это не описание структуры
парень писал(а): у каждой строки базы есть своя база
внутри базы данных содержатся таблицы. Внутри таблиц - строки. Внутри строк - ячейки. Внутри ячеек - данные. Лучше придерживаться такой лексики.
парень писал(а): итем листвью в контейнер "баланс".
это я вообще не поняла что такое.

Прочти уроки с 34го все, что касаются баз данных, затем урок 52.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение rezak90 » 22 окт 2013, 22:30

Foenix, хотя бы чуточку сарказма прибавила бы
R.id.team
Политика на форуме запрещена

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение Foenix » 22 окт 2013, 22:46

тебе б прибавила, да сил уже нету никаких. :P
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение KamiSempai » 23 окт 2013, 00:01

Я понял о чем он. По мне, так самым быстрым и менее геморойным решением будет взять ExpandableListView и переопределить метод isGroupExpanded(int groupPosition), что бы он всегда возвращал true. Еще можно заглушить метод collapseGroup(int groupPos) также переопределив его и возвращать false без вызова метода суперкласса.
В итоге получится список который всегда раскрыт.
Группы будут элементами списка, а строки списками валют.
Ни каких Map делать не нужно. Можно сразу делать выборку из базы.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

парень
Сообщения: 223
Зарегистрирован: 30 мар 2013, 22:52

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение парень » 23 окт 2013, 02:29

в первую очередь хочу сказать спасибо всем кто поделился мыслями и помогает мне.
наваял картинку... надеюсь так нагляднее.
Вложения
startandroid.png
startandroid.png (38.32 КБ) 3787 просмотров
Мой первенец: MyMoney. Менеджер расходов

Бьем рекорды русских топов :)

Могу ответить на любые вопросы по маркетингу и развитию.

парень
Сообщения: 223
Зарегистрирован: 30 мар 2013, 22:52

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение парень » 23 окт 2013, 02:32

KamiSempai писал(а):Я понял о чем он. По мне, так самым быстрым и менее геморойным решением будет взять ExpandableListView и переопределить метод isGroupExpanded(int groupPosition), что бы он всегда возвращал true. Еще можно заглушить метод collapseGroup(int groupPos) также переопределив его и возвращать false без вызова метода суперкласса.
В итоге получится список который всегда раскрыт.
Группы будут элементами списка, а строки списками валют.
Ни каких Map делать не нужно. Можно сразу делать выборку из базы.
спасибо. завтра буду делать.

Есть еще идеи?
Мой первенец: MyMoney. Менеджер расходов

Бьем рекорды русских топов :)

Могу ответить на любые вопросы по маркетингу и развитию.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение Foenix » 23 окт 2013, 11:18

вот это я понимаю! хотела попросить картинку, да думала - все равно не будешь делать..
позже отвечу, через пару часов, сейчас времени нет. Структура базы данных неверная. Тут нужно всего 2 таблицы. Остальное все просто.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

парень
Сообщения: 223
Зарегистрирован: 30 мар 2013, 22:52

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение парень » 23 окт 2013, 17:08

буду очень благодарен.

на данный момент сделал программное наполнение через цикл эллементов и addView ))) убого как то... обработчик не могу сделать.
Мой первенец: MyMoney. Менеджер расходов

Бьем рекорды русских топов :)

Могу ответить на любые вопросы по маркетингу и развитию.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение Foenix » 23 окт 2013, 18:37

Значит так. Поправь, если я не права и что-то не так поняла.

я вижу на экране список1 из текстовых элементов и картиночек, в котором пока 4 элемента. К каждому элементу прилагается еще один список2, где каждому элементу из списка1 соответствует несколько элементов из списка 2. Только не пойму что это за 1, 2, 3, 4 циферки, стоящие справа.

Таким образом, база данных будет состоять из 3 таблиц (предварительно).
1 таблица MAIN (временное название) - это основной список. его поля:

_id - integer, формируется автоматически.
image - blob картинка. Т.к. картика небольшая и табличка небольшая, ее допустимо хранить в blob-формате прямо в таблице. Но можно и хранить отдельно, а в таблицу, вместо этого поля вносить путь к картинке, тогда поле станет String.

2 таблица вспомогательная, называется "справочник" валют Valute

_id integer, формируется автоматически
val_code - допустим если нужен код валюты String
val_name - наименование String

3 таблица - это твои дополнительные списки DETAILS. Поля будут такие:

_id - integer, формируется автоматически.
id_main - integer, это поле является ссылкой на _id поле главной таблицы MAIN (формирование названия желательно так)
summa - integer (если целое, допустим), это сумма или по-твоему баланс
id_valute - integer, ссылка на код валюты строку _id из справочника валют

Это что касается структуры базы данных.

Таким образом, таблица 2 у тебя будет по твоему рисунку выглядеть примерно так:

_id id_main summa id_valute

1 1 1024 1
2 1 500 2
3 1 684 3
4 2 -785 1
5 2 300 2
6 3 100 3
7 4 650 4
8 4 -456 5

справочник валют
1 руб
2 usd
3 eur
4 jpy
5 chr

ну а main сам сообразишь)
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: биндер,адаптер,листвью и массив данных... давайте попоря

Сообщение Foenix » 23 окт 2013, 18:46

Далее запросы для выборки данных для отображения.

1 списочек
select * from main
2 это балансы для каждой строки из списка 1
select details._id, details.summa, valute.name from details left outer join valute on details.id_valute=valute._id where details.id_main = ?
каждому ? соответсвует _id из main
вот так.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Ответить