Вызов метода действия из класса расширенного представления в Android - PullRequest
3 голосов
/ 27 марта 2012

Это проблема, которую я не предвидел при разработке структуры моего приложения.

В основном у меня есть 3 класса.

ProfileActivity //The main activity for the application.
ProfileView     //Which extends Linear Layout so that I can tinker with my own view. Note that this is just part of the whole activity and not the main layout
ProfileData     //This is just a class for storing data.

Действие содержит несколько ProfileViews, каждый из которых содержит один profileData.

Вот где я застрял.Моему представлению профиля назначен метод по щелчку, который должен вызывать метод заполнения в действии.К сожалению, `` ``

//I'm inside the activity
public void populateProfileDataForm(ProfileData pd)
            {
                //edit some text fields and other widgets from here
            }

Есть ли способ вызвать метод действия из класса profileView?

Если нет, то ошибка в моем дизайне, и может ли кто-нибудь указать мне на лучшее решение для привязки данных, представления и действий?

Ответы [ 2 ]

8 голосов
/ 27 марта 2012

Когда вы создаете представление, вам всегда нужен контекст, и вы всегда передаете ему действие.Поэтому попробуйте использовать приведенный ниже код:

If(m_context instanceof ProfileActivity)
{
    ProfileActivity activity = (ProfileActivity)m_context;
    // Then call the method in the activity.
}

Или напишите интерфейс onProfileViewClickListener, например view.onclickListener.затем ProfileActivity реализует его и устанавливает его в ProfileView.

0 голосов
/ 27 марта 2012

Что делать, если вы назначите OnClickListener или OnTouchListener в своем классе ProfileActivity и в этом слушателе вы не сможете вызвать метод заполнения.В OnTouchListener вы можете получить позицию TouchEvent, чтобы вы могли назначить его для определенного профиля.

...