1

各行にチェックボックスを付けて、独自の ListView 用アダプターを作成してみます。すべて正常に動作しますが、問題は、いくつかのチェックボックスをチェックしてから下にスクロールすると、他のチェックボックスもチェックされることです。

(最初にチェックすると、11日、21日、...もチェックされます)誰が問題がどこにあるのか説明できますか?

ありがとうございました。

私のアダプター:

public class WordAdapter extends CursorAdapter {

    public WordAdapter(Context context, Cursor cursor, int flags){
        super(context, cursor, flags);
    }

    @Override
    public void bindView(View oldView, Context ctx, Cursor c) {

        int wordQuestionIndex = c.getColumnIndex( WordDBAdapter.QUESTION );
        int wordAnswerIndex = c.getColumnIndex( WordDBAdapter.ANSWER );
        int activeIndex = c.getInt(c.getColumnIndex( WordDBAdapter.ACTIVE ));
        String question = c.getString(wordQuestionIndex);
        String answer = c.getString(wordAnswerIndex);
        int active = c.getInt(activeIndex);

        Log.d("WordAdapter", "isActive: "+ active + " - " + question + ", " + answer);

        ((TextView) oldView.findViewById(R.id.adapter_question)).setText(question);
        ((TextView) oldView.findViewById(R.id.adapter_answer)).setText(answer);
        CheckBox checkBox =(CheckBox) oldView.findViewById(R.id.myCheckBox);
        //checkBox.setChecked(vh.isChecked);
    }


    @Override
    public View newView(Context ctx, Cursor c, ViewGroup root) {
        LayoutInflater inflater = LayoutInflater.from(ctx);
        View view = inflater.inflate(R.layout.word, root, false);
        return view;
    }   
}
4

1 に答える 1

1

これは、古いビューを再利用しているためです...

チェックされているチェックボックス項目のリストを維持し、新しい値で初期化するたびにbindviewのチェックボックス項目をリセットすることをお勧めします。

同様の質問と解決策はここにあります

于 2012-09-12T20:39:36.897 に答える