我長期以來都對列表視圖的不同方面有所瞭解。這是一個問題。我知道一個解決方法,但我想明白爲什麼會發生。列表視圖的幾張圖片在滾動時填充所有listview項目
它在擴展ArrayAdapter的類的getView方法中。
我有幾個listItems和每個我有一個圖像左。對於幾個listItems,右邊有一個信息圖像。爲此,我添加了一個偵聽器來觸發alertdialog。 讓我們說應用程序共有15個列表項目中的2個信息圖像..到目前爲止這麼好。但 - 如果我向下滾動,然後滾動upp - 所有其他listitems現在填充此信息圖像。儘管爲每個視圖使用imageHolder,爲什麼會發生這種情況?
public View getView(int position, View convertView, ViewGroup parent) {
final ViewGroup theParent = parent;
final int thePosition = position;
View view = null;
ViewHolder holder;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.main, parent, false);
holder = new ViewHolder();
holder.textView = (TextView) view.findViewById(R.id.label);
holder.imageView = (ImageView) view.findViewById(R.id.icon);
holder.infoView = (ImageView) view.findViewById(R.id.imageIcon);
view.setTag(holder);
}
else {
view = convertView;
holder = (ViewHolder) view.getTag();
}
holder.textView.setText(values[position]);
switch (thePosition) {
case 0:
holder.imageView.setImageResource(R.drawable.conv);
break;
case 1:
holder.imageView.setImageResource(R.drawable.counting);
break;
case 2:
holder.imageView.setImageResource(R.drawable.travelling);
break;
case 3:
holder.imageView.setImageResource(R.drawable.love);
break;
case 4:
holder.imageView.setImageResource(R.drawable.dating);
holder.infoView.setImageResource(R.drawable.info);
break;
case 5:
holder.imageView.setImageResource(R.drawable.restaurant);
holder.infoView.setImageResource(R.drawable.info);
break;
case 6:
holder.imageView.setImageResource(R.drawable.thaidishes);
break;
case 7:
holder.imageView.setImageResource(R.drawable.time_);
break;
case 8:
holder.imageView.setImageResource(R.drawable.time2);
break;
case 9:
holder.imageView.setImageResource(R.drawable.colours);
break;
case 10:
holder.imageView.setImageResource(R.drawable.weather);
break;
case 11:
holder.imageView.setImageResource(R.drawable.directions);
break;
case 12:
holder.imageView.setImageResource(R.drawable.emergency);
break;
case 13:
holder.imageView.setImageResource(R.drawable.cities);
break;
}
return view;
}
我以前用checbox-items有過類似的問題。檢查項目在滾動查看時未被選中。我通過在arraylist中將檢查的項存儲爲布爾值來解決此問題。 有沒有類似的解決方案?
我提到的解決方法只是將imageResourse設置爲零(0)。