Проблема с Android, связанная с OnItemClickListener ListView - PullRequest
0 голосов
/ 25 августа 2011

У меня есть ListView в моем макете. Вот макет для элемента списка.

shopitem.xml

<?xml version="1.0" encoding="utf-8"?>
<TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android" 
    android:paddingTop="2dip"
    android:paddingBottom="2dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:mode="twoLine"> 
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/text1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingTop="6dip"
        android:paddingLeft="44dip"
        android:textStyle="bold" 
        android:lines="1"
        android:textColor="#FFFFFF"/>
    <ImageView
            android:id="@+id/playBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="3dip"
            android:layout_alignRight="@android:id/text1"
            android:src="@drawable/btnplaypreview"/>            
</TwoLineListItem>

Теперь я хочу установить некоторые изменения изображения в playBtn OnItemClickListener. Для этого я использую следующий код.

ListView shopActivityListView = (ListView) findViewById(R.id.shopActivityListView);
shopActivityListView.setCacheColorHint(Color.TRANSPARENT);
shopActivityListView.setAdapter(new ArrayAdapter<String>(getApplicationContext(), R.layout.shopitem, trackArr[1]));

shopActivityListView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View vItem, int position, long id) {
    // TODO Auto-generated method stub
    ImageView playBtn = (ImageView) vItem.findViewById(R.id.playBtn);
    playBtn.setImageResource(R.drawable.eq12);
}                
});

Но ничего не происходит при нажатии на элемент. Я проверил, что onItemClick метод выполняется без каких-либо исключений. Но ничего не меняется. В чем проблема в моем коде?

1 Ответ

0 голосов
/ 29 августа 2011

Изображение в любом элементе Listview не может быть изменено напрямую, так как оно контролируется адаптером.Только getView() метод адаптера может установить любое представление в элементах.Поэтому в методе onItemClick мы должны установить специальный флаг position, а затем вызвать notifyDataSetChanged() для адаптера.Более того, необходим специальный адаптер, где мы должны определить метод getView (), чтобы мы установили изображение в зависимости от указанного выше position специального флага.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...