(хотя это было год назад, я пришел сюда через Google)
Что-то подсказывает мне, что у вас загружено слишком много видов одновременно, и Android не может отследить их все. * Это звучало как неправильное использование ListView, в чем многие из нас виноваты. Предполагая, что у вас есть специальный адаптер массива:
public abstract View getView (int position, View convertView, ViewGroup parent)
Когда вы перегружаете эту функцию, всегда проверяйте convertView.
public abstract View getView (int position, View convertView, ViewGroup parent)
{
View view = convertView;
if ( view == null )
{
// create/inflate the view here
// ex: view = inflater.inflate(R.layout.bob, null);
// configure the static parts here
}
// configure the dynamic parts here
return view;
}
Android имеет механизм «корзины» для представлений списка и будет использовать представления, если это возможно. Другими словами, вместо создания множества разных представлений, он будет извлекать старое представление из корзины.
В вашем случае у вас есть 10 различных видов просмотров. Если они очень похожи, вы можете создать суперпредставление и включить или отключить части представления (например, subView.setVisibility (View.GONE)). Просто остерегайтесь массивных блоков операторов. Я не использовал их раньше, но вы должны исследовать
public abstract int getItemViewType (int position)
public abstract int getViewTypeCount ()
Это было бы лучше, потому что вам не нужно иметь дело с лишним пухом, и оно должно автоматически управляться Android
- Лично я не уверен на 100%, что это может быть, но у меня такое чувство, что есть вероятность 66%, что это