Как из ListAdapter получить доступ к функции основного активити?
Старшие братья подскажите пожалуйста начинающиму andorid разработчику, Я использую ListView с установленным ArrayAdapter качестве способа вывода данных.
В строке лейаута который использует адаптер заданы 2 кнопки "+1" и "-1", которые меняют число в собственной в строке.
Кнопочки работаю все хорошо, но в основной форме я хочу посчитать итог по всем строкам ArrayList.
Лисенеры нажатия на кнопки находяться в классе адаптора. Я не могу найти как я могу после нажатия кнопки в строке обновить итоговый показатель.
Я пробовал в основной активити делать :
productList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapter, View v, int position, long arg3) { SetSumAsTitle(); } });
Но событие не срабатывает.
AndreyKu, выкинуть листвью, взять RecyclerView. Сделать интерфейс листенер, который будете пропихивать в адаптер(если не используете Rx. Если используете - из адаптера должен торчать Observable кликов). Где-то (в активити в вашем случае) засечиваете реализацию интерфейса в адаптер. В обработчике изменяете свой список и оповещаете об этом адаптер (notifyItemsRangeUpdated) - поэтому ресайклер, а не листвью. Листвью нельзя нотифицировать об изменении одного элемента, приходится о всём датасете.
Всё. Адаптер занимается своим делом (маппит модель на вьюхи и оповещает во воне о действиях над вьюхами). Логика делается не в адаптере. Всё чётко.