2013-06-20 1 views
1

Я пытаюсь изменить изображение элемента списка на click.I попытался использовать представление, но при его использовании Я получаю несколько элементов с измененным изображением, даже если я просто нажимаю на один. Я использую простой адаптер, и код такой же, как в этом вопросе: - changing image on listview at runtime in android.Измените изображение элемента списка на клике

А также я не хочу использовать пользовательский адаптер. Это будет действительно полезно, если кто-то поможет мне в решении этой проблемы просто через простой адаптер.

Текущий код

@Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     // TODO Auto-generated method stub 

     /* 
     imageView=(ImageView)l.getChildAt(position).findViewById(R.id.PlayPause); 


     imageView.setImageResource(R.drawable.pause); 

     */ 
} 
+0

вам нужно сделать 'ImageView ivImage = (ImageView) v.findViewById (R.id.PlayPause),' ' ivImage.setImageResource (R.drawable.pause);' –

ответ

0

Почему бы не использовать

ListView.OnItemClick(OnItemClickListener{}) 

http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html

+0

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

+0

Вы должны использовать v.findById (R.id.PlayPause); чем l.getChildAt (позиция) .findViewById (R.id.PlayPause); на мой взгляд – Romain

+0

Я пробовал, но он также меняет изображения нескольких других предметов. –

1

1- Не используйте получить ребенка в том, когда у непосредственно получать вид ребенка, как "View V" в событие.

2- вам просто нужно вызвать метод invalidate() в представлении, как только вы установите новый фоновый ресурс.

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 

    imageView=((ImageView)v) 

    imageView.setImageResource(R.drawable.pause); 

    imageView.invalidate(); 

}

В то время как вы должны сделать свой список с помощью простого адаптера курсора с ImageView ----: -

http://thinkandroid.wordpress.com/2010/01/09/simplecursoradapters-and-listviews/

см эту ссылку для этого.

+0

Показывает мне ошибку ClassCastException в imageView = ((ImageView) v) –