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);

            ...

这可行,但有一个问题,该方法在 listview 侦听器 ( onListItemClick (ListView l, View v, int position, long id) {...) 中执行 当您进入活动时,CheckedTextView 具有其默认图像,直到您单击该项目并执行该方法。

if (checkedTextView.isChecked ()) {...如果在 onListItemClick 中创建了 CheckedTextView,我如何在 onCreate() 中实现此方法?

我搜索了很多,但找不到答案。

我很感激任何帮助

提前致谢。

4

1 回答 1

1

您必须确定是否必须在 ListAdapter 类的 getView() 方法中检查 CheckedTextView。监听器中的代码仅在生成特定监听器事件时才会执行,直到并且除非即使您在 onCreate() 方法中编写也没有执行监听器代码。

对不起我的英语......

于 2013-09-19T07:03:57.313 回答