Android ListView GetView()方法位置中的奇怪行为

Android ListView GetView()方法位置中的奇怪行为,android,listview,custom-adapter,Android,Listview,Custom Adapter,我为我的ListView提供了一个自定义适配器,在这里我向它发送了一个列表,如果位置在列表中,那么imageview(在自定义行中)将其src更改为另一个。。下面是GetView方法: @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView

我为我的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个位置的列表。如果我慢慢滚动列表视图,效果会很好,只有1个imageview按原样更改。但是如果我快速滚动,其他接近正确位置的图像视图也会改变

有人能告诉我为什么吗?

如果列表中不包含位置,您永远不会将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);

谢谢你,我成功了。但是,如果列表中不包含其位置,则custom_row.xml中的默认src图像被设置为我想要的图像,那么为什么它会被更改?我相信这是由于视图被重用的事实,如果该视图包含图像而不是默认资源,它可能会显示。@Omar HOCKED82是正确的。如果包含自定义图像的视图在列表中的其他位置重新使用,它仍将包含自定义图像。规则是当您获得要转换的视图时,您应该确保您需要定制的所有内容都得到了定制。