У меня есть класс DataAdapter, чей getView() возвращает класс пользовательского вида. Сам вид представляет собой LinearLayout, который содержит несколько элементов управления, одним из которых является CheckBox. Он также имеет несколько свойств - идентификатор из базы данных и его индекс в DataAdapter.Android View with CustomEvent, проходящий Просмотр как аргумент
Когда происходит событие CheckBox OnCheckedChange, я хочу, чтобы в DataAdapter произошло событие, чтобы я мог изменить базовые данные. Я могу создать пользовательское событие в представлении с помощью интерфейса:
private OnChangedListener mListener;
public interface OnChangedListener{
public void onChanged();
}
public void setOnChangedListener(OnChangedListener eventListener) {
mListener=eventListener;
}
и называют, что из CheckedChange чекбокса:
private OnCheckedChangeListener checkChanged = new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
mListener.onChanged();
}
};
но то, что я не могу сделать, это разработать способ чтобы передать представление в качестве аргумента. Если изменить интерфейс для возврата Вид:
public interface OnChangedListener{
public void onChanged(MyCustomView arg0);
}
Я не могу вернуться вид изнутри OnCheckedChangeListener():
private OnCheckedChangeListener checkChanged = new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
mListener.onChanged(this);
}
};
Я получаю сообщение об ошибке: «Метод OnChanged (MyCustomView) в типе MyCustomView.OnChangedListener не применим для аргументов (новый CompoundButton.OnCheckedChangeListener() {}) "
Я думал об использовании Handler.Post, но тогда я был бы внутри Runnable, поэтому я все еще могу 't выставить представление.
Я уверен, что там должно быть что-то простое, что я пропускаю ...
Это то, что я получаю. Мой вопрос в том, как я могу ссылаться на представление внутри OnCheckedChangeListener? –
вид, который вы возвращаете в конце getView() –