Где находится исходный код, который управляет View
повторным использованием в Android? Я могу думать о трех отдельных частях этого процесса, но может быть и больше:
- Логика, которая определяет, имеет ли
View
право на повторное использование
- Код, который управляет пулами
View
с, которые можно использовать повторно
- Код, который удаляет повторно используемый
View
из пула и сбрасывает значения его свойств для представления логически различных View
РЕДАКТИРОВАТЬ: Сообщение в блоге Разработка приложений для Android - уловки и причуды приводит следующий пример:
public class PencilWise extends ListActivity {
View activeElement;
// ...
@Override
public void onCreate ( Bundle savedInstanceState ) {
// ...
this.getListView( ).setOnItemClickListener ( new OnItemClickListener ( ) {
public void onItemClick ( AdapterView<?> parent, View view, int position, long id ) {
MyActivity.this.activeElement = view;
MyActivity.this.showDialog ( DIALOG_ANSWER );
}
} );
}
}
Метод showDialog
отображает диалоговое окно с ответом, в котором необходимо знать, какой вопрос открыл пользователь. Проблема в том, что к моменту открытия диалога представление, переданное в onItemClick
, могло бы быть повторно использовано, и поэтому activeElement
больше не будет указывать на элемент, по которому пользователь щелкнул, чтобы открыть диалоговое окно в первую очередь!