我有一個自定義arrayadapter,處理大約15個字符串的列表視圖。每行的樣式交替出現(標籤和這些標籤的值之間 - 例如,第1行可以是「電子郵件地址」,第2行將是實際的電子郵件地址)。我在arrayadapter的getView()方法中改變了每行的樣式以便像這樣交替。因此,如果當前位置的項目是一個標籤,我將從默認的行樣式(這是值應用於它們的樣式)更改樣式。當第一次加載列表視圖時,樣式是完美的,而且我希望它是如何。如果我慢慢向上或向下滾動列表,它會保持這種狀態。但是,如果我快速向上和向下滾動列表,則值行的樣式開始變爲標籤行的樣式,直到所有行都具有標籤行的樣式。有誰知道爲什麼會發生這種情況?我在應用程序的其他列表視圖中使用了自定義適配器,而沒有像這樣的問題。當我用自定義適配器上下滾動listview時,getView()開始表現得很奇怪。爲什麼?
編輯:發現它還將所有行更改爲肖像 - >風景方向更改上的標籤樣式。不要在風景 - >人像變化上做到這一點。以下是我正在使用的適配器。我錯過了什麼嗎?
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;
}
}
}
你可以顯示你的getView代碼嗎? – 2010-08-04 22:07:08
最初在加載listview時會顯示多少行。使用customadapter的getview方法爲一行創建一個視圖是一項內存密集型任務。這是混亂渲染標籤的原因。 寫你的代碼瞥見..可能是你得到一個解決方案 – 2010-08-05 12:50:39