我的布局中有一个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);
}
});
但是在itemclick上没有发生任何事情。我检查过onItemClick
方法正在执行,没有任何异常。但没有任何改变。我的代码有什么问题?
答案 0 :(得分:0)
Listview
的任何项目中的图像都不能直接更改,因为它由适配器控制。只有适配器的getView()
方法可以设置项目中的任何视图。
因此,在onItemClick
方法中,我们必须设置position
特定标志,然后为适配器调用notifyDataSetChanged()
。此外,需要一个自定义适配器,我们必须定义getView()方法,以便我们根据上面的position
特定标志设置图像。