0

CheckedTextView 内にある ListView を使用しています。CheckedTextView ボックス (チェック/チェックなし) を変更するには、次のメソッドを使用しています。

protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);

    ...

        SoundDialog.Builder alert;
        v.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
        switch (soundPreference.getType()) {
        case BOOLEAN:
            CheckedTextView checkedTextView = (CheckedTextView) v;

            if (checkedTextView.isChecked()){
                checkedTextView.setCheckMarkDrawable(R.drawable.ic_blue);
            } else {
                checkedTextView.setCheckMarkDrawable(R.drawable.ic_red);
            }

            boolean checked = !checkedTextView.isChecked();
            ((CheckedTextView) v).setChecked(checked);

            ...

これは機能しますが、問題があります。メソッドはリストビュー リスナー内で実行されます ( onListItemClick (ListView l, View v, int position, long id) {...)。アクティビティに入ると、アイテムをクリックしてメソッドを実行するまで、CheckedTextView にはデフォルトのイメージが表示されます。

if (checkedTextView.isChecked ()) {...CheckedTextView が onListItemClick 内で作成された場合、onCreate () でこのメソッドを実装するにはどうすればよいですか?

私はたくさん検索しましたが、答えが見つかりません。

どんな助けにも感謝します

前もって感謝します。

4

1 に答える 1

1

ListAdapter クラスの getView() メソッドで CheckedTextView をチェックする必要があるかどうかを判断する必要があります。リスナーのコードは、 onCreate() メソッドに記述してもリスナーコードが実行されない限り、その特定のリスナーイベントが生成されたときにのみ実行されます。

私の英語でごめんなさい.....

于 2013-09-19T07:03:57.313 に答える