Чтобы сделать это быстро, я объясню свою реализацию, а затем проблему =):
У меня есть объект:
Class myClass{
......attrs......
......getters and setters......
public void setOnMyClassChangeListener(MyClassChangeListener listener){
this.listener=listener;
}
}
И ListView, контролирующий объекты этого класса сэтот метод в нем ArrayAdapter:
static class ViewHolder {
View view1,view2,view3.....;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
View rowView = convertView;
if (rowView == null) {
LayoutInflater inflater = (LayoutInflater) getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.templaterow, null, true);
holder = new ViewHolder();
holder.view1=.....;
holder.view2=.....;
holder.view3=.....;
rowView.setTag(holder);
} else {
holder = (ViewHolder) rowView.getTag();
}
MyClass object= items.get(position)
object.setOnMyClassChangeListener(MyClassChangeListener(){
public void onMyClassChangeListener(MyClass obj){
holder.view1.setXX(obj.getValue1());
holder.view2.setXX(obj.getValue2());
......
}
}
);
}
Так что я думаю, что я теряю память, потому что слушатель остается установленным после выхода из ListActity, а затем пропускается держатель, верно?
Есть ли методлучше, чем перебирать адаптер в onStop, удаляя слушателей?
Спасибо