Android ListView GetView()方法位置中的奇怪行为
我为我的ListView提供了一个自定义适配器,在这里我向它发送了一个列表,如果位置在列表中,那么imageview(在自定义行中)将其src更改为另一个。。下面是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
@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是正确的。如果包含自定义图像的视图在列表中的其他位置重新使用,它仍将包含自定义图像。规则是当您获得要转换的视图时,您应该确保您需要定制的所有内容都得到了定制。