У меня есть listview с пользовательским arrayadapter, который обрабатывает около 15 строк. Стиль каждой строки чередуется (между метками и значениями для этих меток - например, строка 1 может быть "адрес электронной почты", а строка 2 - фактический адрес электронной почты). Я изменяю стиль каждой строки, чтобы он чередовался следующим образом в методе getView() адаптера массива. Таким образом, если элемент в текущей позиции является меткой, я изменю стиль строки на стиль по умолчанию (который применяется к значениям). Когда список загружается впервые, стилизация идеальна и именно такая, как я хочу. Если я медленно прокручиваю список вверх или вниз, он остается таким же. Однако, если я прокручиваю список быстро вверх и вниз, стиль строк значений начинает меняться на стиль строк меток, пока все строки не будут иметь стиль строки меток. Кто-нибудь знает, почему это может происходить? Я использовал пользовательские адаптеры для других видов списка в приложении без подобных проблем.
Edit: Обнаружил, что он также меняет стилистику всех строк на стилистику ярлыка при смене ориентации портрет->ландшафт. Этого не происходит при смене ландшафтной ориентации на портретную. Ниже приведен адаптер, который я использую. Я что-то упускаю?
public class DetailsAdapter extends ArrayAdapter<String> {
private TextView text = null;
private String item = null;
public DetailsAdapter(Context context, int resource, int textViewResourceId, String[] objects) {
super(context, resource, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
text = (TextView) super.getView(position, convertView, parent);
item = getItem(position);
if (item.equals("Name") || item.equals("Mobile") || item.equals("Home") || item.equals("Email") || item.equals("Address")) {
text.setBackgroundColor(0xFF575757);
text.setTextSize(15);
text.setTypeface(null, Typeface.BOLD);
text.setPadding(8, 5, 0, 5);
} else {
text.setPadding(15, 15, 0, 15);
}
return text;
}
@Override
public boolean isEnabled(int position) {
item = getItem(position);
if (item.equals("Name") || item.equals("Mobile") || item.equals("Home") || item.equals("Email") || item.equals("Address")) {
return false;
} else {
return true;
}
}
}