Передача данных из класса в активити

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
x.dr
Сообщения: 5
Зарегистрирован: 14 июн 2013, 16:22

Передача данных из класса в активити

Сообщение x.dr » 16 июн 2013, 13:55

Привет всем!

Встал такой вопрос:

Уже несколько часов бьюсь и ничего не получается, задача такая:

Есть:
Активити1, Активити2, и класс кастомного адаптера ExpandableList принадлежащего Активити1

Цель:
1.Отловить нажатие на кнопке внутри child элемента expandable list
2.Переслать имя элемента соответствующего нажатой кнопке в Активити2
3.Получить результат выполнения Активити2

Проблема:
Проблема в том что нужно вызвать Активити из класса и там же получить ответ,

Можно было бы сделать OnClick перехват в Активити1 а не в классе адаптера и проблема была бы решена, но я не знаю как это сделать, как получить позицию child и group элементов по нажатию на кнопку, не на дочерний элемент, а именно на кнопку! там есть метод только OnChildItemClickListener, если можно из него как-то понять какая кнопка была нажата, то такое решение тоже устраивает...

Подскажите какой-нить вариант, я думаю надо копать в сторону интерфейсов (если решать проблему в кастомном адаптере), но я так и не понял что где нужно инициализировать и передать..

Заранее благодарю за помощь :)

x.dr
Сообщения: 5
Зарегистрирован: 14 июн 2013, 16:22

Re: Передача данных из класса в активити

Сообщение x.dr » 16 июн 2013, 15:17

Решил проблему с помощью stackoverflow, опубликую что сделал, может кому-то понадобится:

Итак в Activity1 объявляем публичные переменные gPos (для указкания позиции группы) и cPos (для указания позиции дочернего элемента который содержит нажатую кнопку) и кастомный OnClickListener:
public int gPos, cPos;

.....

public View.OnClickListener childsClicker = new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("777", "GroupName:" +adapter.getGroupText(gPos));
Log.d("777", "ChildName:" +adapter.getChild(gPos,cPos));
}
};
В методе getViewChild() класса кастомного адаптера что выполняется для "вырисовки" дочерних элементов моего ExpandableListView изменяю значения переменных gPos и cPos объявленных в Activity1 на текущие, и присваиваю объявленный в Activity1 OnClickListener нужной кнопке
public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
View convertView, ViewGroup parent) {
if (convertView == null) {
.....

((iNweek) mContext).cPos = groupPosition;
((iNweek) mContext).gPos = childPosition;

Button btnAddSigns = (Button) convertView.findViewById(R.id.iExp_BtnAdd);
btnAddSigns.setOnClickListener(((iNweek) mContext).childsClicker);
В результате данных мистификаций, я получаю в Activity1 доступ к текущему дочернему элементу списка из которого была нажата кнопка, дальнейшие операции (передача данных в Activity2 и получение оных), с легкостью реализую уже из Activity1 с помощью startActivityForResul()

Ответить