2011-08-25 11 views
0

내 레이아웃에 ListView가 있습니다. 다음은 목록 항목의 레이아웃입니다.안드로이드 문제 관련 ListView의 OnItemClickListener

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); 
}     
}); 

하지만 itemclick에서는 아무 것도 일어나지 않습니다. onItemClick 메서드가 예외없이 실행되고 있는지 확인했습니다. 그러나 아무것도 변하지 않습니다. 내 코드의 문제점은 무엇입니까?

+0

TwoLineListItem은 선형 레이아웃 확장 기능입니까? 'android : clickable = "true"'를 추가하십시오. –

+0

나는 그것을 시도했다. 변경 없음. –

+0

playBtn.setImageResource (R.drawable.eq12); 다음에 목록보기를 무효화하십시오. –

답변

0

Listview의 항목의 이미지는 어댑터가 제어하므로 직접 변경할 수 없습니다. 어댑터의 getView() 메소드 만 항목의보기를 설정할 수 있습니다. 따라서 onItemClick 메서드에서 position 특정 플래그를 설정 한 다음 해당 어댑터에 notifyDataSetChanged()을 호출해야합니다. 게다가 위의 position 특정 플래그에 따라 이미지를 설정하도록 getView() 메소드를 정의해야하는 사용자 정의 어댑터가 필요합니다.

+0

예를 들어 주시겠습니까? –