0

У меня есть список, в котором каждый элемент списка содержит ImageView. Теперь в моем классе адаптера я устанавливаю прослушиватель кликов на ImageView, который изменяет ресурс изображения. Я использую простой код, и он работает, но у меня есть уникальная проблема: если я нажму на любое изображение, которое он изменит, а также изменится образ последующего элемента 6-го списка. это очень уникальная проблема, с которой я столкнулся, и я не понимаю, что ее вызывает.Попытка изменить источник изображения в списке

Мой нажмите слушателем в классе адаптера:

public class CustomListAdapter extends BaseAdapter { 
private Activity activity; 
private LayoutInflater inflater; 
private List<Movie> movieItems; 
ImageLoader imageLoader = AppController.getInstance().getImageLoader(); 

public CustomListAdapter(Activity activity, List<Movie> movieItems) { 
    this.activity = activity; 
    this.movieItems = movieItems; 
} 

@Override 
public int getCount() { 
    return movieItems.size(); 
} 

@Override 
public Object getItem(int location) { 
    return movieItems.get(location); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    if (inflater == null) 
     inflater = (LayoutInflater) activity 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    if (convertView == null) 
     convertView = inflater.inflate(R.layout.list_item, null); 

    if (imageLoader == null) 
     imageLoader = AppController.getInstance().getImageLoader(); 
    NetworkImageView thumbNail = (NetworkImageView) convertView 
      .findViewById(R.id.thumbnail); 
    final ImageView favIcon = (ImageView) convertView.findViewById(R.id.favIcon); 
    TextView title = (TextView) convertView.findViewById(R.id.title); 
    TextView rating = (TextView) convertView.findViewById(R.id.rating); 
    TextView location = (TextView) convertView.findViewById(R.id.location); 

    // getting movie data for the row 
    Movie m = movieItems.get(position); 

    // thumbnail image 
    thumbNail.setImageUrl(m.getThumbnailUrl(), imageLoader); 

    // title 
    title.setText(m.getTitle()); 

    // rating 
    rating.setText("Rating: " + String.valueOf(m.getRating())); 

    // location 
    location.setText("Location:" + String.valueOf(m.getLocation())); 

    favIcon.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      ((ImageView)v).setImageResource(R.drawable.batdroid); 
     } 
    }); 


    return convertView; 
} 

} 
+0

вы можете разместить остальную часть кода адаптера, пожалуйста? – Lazai

+0

Конечно, позвольте мне отредактировать –

+0

Итак, когда вы нажимаете, вы меняете изображение этой выбранной строки, а также меняете изображение последней строки? или только 6? – Lazai

ответ

0

Я guessin' это вопрос вид рецикл. Вы должны использовать шаблон «Просмотр держателя», отметьте this для более широкого обзора.

Во всяком случае, вы должны попробовать что-то вроде этого:

public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 

    if (convertView == null) { 
     convertView = inflater.inflate(R.layout.your_layout, null); 

     holder = new ViewHolder(); 
     holder.img= (ImageView) convertView.findViewById(R.id.img); 

     convertView.setTag(holder); 
    } else { 
     holder = convertView.getTag(); 
    } 



// set for each image in yourlist 
     holder.img.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       ((ImageView) v).setImageResource(R.drawable.batdroid); 
      } 
     }); 


    return convertView; 
} 

private static class ViewHolder { 
    public ImageView img; 
} 
+0

Спасибо за помощь, но я попробовал и его еще не исправил. неужели вы думаете, что проблема с эмулятором cus я работаю над эмулятором? –

+0

Я так не думаю, но вы должны попробовать проверить его на своем телефоне или на любом телефоне – Lazai

 Смежные вопросы

  • Нет связанных вопросов^_^