我有一个自定义适配器为我的ListView在那里我发送给它一个列表,如果位置是在列表然后imageview(即在自定义行)改变它的src到另一个..下面是GetView方法:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.start_row, null); // line
// 47
holder = new ViewHolder();
holder.tv_SuraName = (TextView) convertView.findViewById(R.id.Start_Name);
holder.tv_SuraName.setTypeface(Font);
holder.tv_PageNumber = (TextView) convertView.findViewById(R.id.Start_Numbering);
holder.im_Audio = (ImageView) convertView.findViewById(R.id.Start_ImageView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tv_SuraName.setText(SuraList_SuraNamesCode[position]);
holder.tv_PageNumber.setText(Integer.toString(PageNumber[position]));
holder.im_Audio.setOnClickListener(new imageViewClickListener(position));
if (TilawaAvailable.contains(position))
holder.im_Audio.setImageResource(R.drawable.quran_list_audioavailable);
return convertView;
}
我发送一个有1个位置的List。如果我慢慢滚动ListView,这工作得很好,只有一个imageview得到改变,因为它应该是。但是如果我快速滚动,其他接近正确位置的imagesview也会被改变!
有人能告诉我为什么吗?
如果位置不包含在列表中,则不要将imageResource设置为其他内容。当带有自定义图像的视图离开屏幕时,它可能会被放置在列表中的较低位置并被重用。
试着改变这个:
if (TilawaAvailable.contains(position))
holder.im_Audio.setImageResource(R.drawable.quran_list_audioavailable);
:
if (TilawaAvailable.contains(position))
holder.im_Audio.setImageResource(R.drawable.quran_list_audioavailable);
else
holder.im_audio.setImageResource(r.drawable.SOME_THING_ELSE);