У меня есть список с пользовательским адаптером массива, который обрабатывает около 15 строк. Стиль каждой строки чередуется (между метками и значениями для этих меток - например, строка 1 может быть «адресом электронной почты», а строка 2 будет фактическим адресом электронной почты). Я изменяю стиль каждой строки таким образом, чтобы она чередовалась в методе getView () arrayadapter. Поэтому, если элемент в текущей позиции является меткой, я изменю стиль с стиля строки по умолчанию (что и применили к ним значения). Когда первый просмотр списка загружается, стилизация идеальна и именно так, как я хочу. Если я прокручиваю список медленно вверх или вниз, он остается таким же. Однако, если я прокручиваю список быстро вверх и вниз, стиль строк значений начинает меняться на стиль меток до тех пор, пока все строки не получат стиль строки меток. Кто-нибудь знает, почему это будет происходить? Я использовал пользовательские адаптеры в других списках приложений без проблем, подобных этой.
Редактировать: Обнаружено, что при изменении портретной и альбомной ориентации все строки также изменяются на стили меток. Не делает это при изменении ландшафта -> портрета. Ниже адаптер, который я использую. Я что-то упустил?
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;
}
}
}