私のアプリケーションには、listView のおかげで表示されるアンケートがあります。ユーザーは、ListItem をクリックして、真または偽で答えることができます。imageView は、答えが true であることを示します。(ListItem がクリックされるたびに imageView を変更します)
グローバルには正常に動作します。imageView を動的に変更できましたが、驚くべきことにsetImageResourceを使用すると、画像が数行で変更されます。 たとえば、行 2 (インデックス 1) をクリックすると、行 2 だけでなく行 12 と 22 の画像も変化します。
現時点では、解決策を見つけることができませんでした。何か手がかりがあればよろしくお願いします。
これが私のリストアイテムのレイアウトです
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="30dp"
>
<ImageView
android:id="@+id/ivCheck"
android:layout_width="25dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:contentDescription="selection state"
android:src="@drawable/check_grey" />
<TextView
android:id="@+id/tvId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textIsSelectable="false"
android:layout_gravity="center_vertical"
android:text="dummy text"
android:visibility="gone"
/>
<TextView
android:id="@+id/tvText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_gravity="center_vertical"
android:layout_marginLeft="14dp"
android:layout_toRightOf="@+id/ivCheck"
android:text="dummy text"
android:textIsSelectable="false" />
</RelativeLayout>
画像を変更する方法は次のとおりです(listActivity内)
protected void onListItemClick(ListView l, View v, int position, long id) {
ImageView image = (ImageView)v.findViewById(R.id.ivCheck);
QuizAnswer currentQuizAnswer = (QuizAnswer) quizRequest.getListAnswers().get(position);
if(currentQuizAnswer.isSelected()) {
image.setImageResource(R.drawable.check_grey);
} else {
image.setImageResource(R.drawable.check_green);
}
currentQuizAnswer.setSelected(!currentQuizAnswer.isSelected());
}
よろしくお願いいたします。