Странное поведение в позиции метода ListView GetView () - PullRequest
0 голосов
/ 07 октября 2011

У меня есть собственный адаптер для моего ListView, куда я отправляю ему List, и если позиция находится в списке, то viewview (то есть в пользовательской строке) меняет свой 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 позицией. Если я медленно прокручиваю ListView, это работает хорошо, и только 1 просмотр изображения изменяется, как и должно быть.Но если я прокручиваю быстро, другие изображения, которые находятся близко к правильному положению, также меняются!
Может кто-нибудь сказать мне, почему?

1 Ответ

2 голосов
/ 07 октября 2011

Вы никогда не устанавливаете 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);
...