2

私のアプリケーションには、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());
}

よろしくお願いいたします。

4

3 に答える 3

0

リストビューにカスタム アダプターを適用する必要があります。次のリンクを確認してください。

リンク 1 リンク 2 リンク 3 リンク 4 . これがあなたに役立つことを願っています。リストビューの世界もご覧ください。あなたの疑問は間違いなく解決されます。これは素晴らしいチュートリアルです。

于 2013-04-29T13:16:43.573 に答える
0

1行を変更して魔法を見る

position = position % (QuizAnswer) quizRequest.getListAnswers().size();
于 2013-04-29T12:59:20.577 に答える