0

我正在通过http://android-holo-colors.com/将颜色主题应用于我的应用程序中的小部件,但我的 ListView 中的项目不遵循颜色主题。我尝试在我的 ListView 之外创建一个简单的 CheckBox 项,我的绿色颜色主题应用于我的 ListView 之外的单个 CheckBox。我的颜色主题曾经在我的 ListView 中的项目上工作,我最近才注意到它停止工作,但我没有对我的 AppTheme 进行任何更改。

下面的屏幕截图显示我的颜色它们仅应用于 ListView 之外的第一个 CheckBox,但我的 ListView 上的项目不会将我的颜色主题应用于 CheckBox

在此处输入图像描述

下面是我在 ListView 中设置 CheckBox 项目的 BaseAdapter

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

    LayoutInflater inflater = (LayoutInflater) this.context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    convertView = inflater.inflate(R.layout.subject_row, null);

    CheckBox textRow = (CheckBox) convertView.findViewById(R.id.subject);
    textRow.setText(getItem(position));

    textRow.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

            if (v instanceof CheckBox) {

                String subject = ((CheckBox) v).getText().toString();
                Log.i("subject", subject);

                if (((CheckBox) v).isChecked()) {
                    activity.arrayListSelectedSubject.add(subject);
                }

                try {
                    if (!((CheckBox) v).isChecked()) {
                        activity.arrayListSelectedSubject
                                .remove(activity.arrayListSelectedSubject
                                        .indexOf(subject));

                    }
                } catch (Exception e) {
                    Log.e("catch Exception", String.valueOf(e));
                    e.printStackTrace();
                }// end try-catch

            }// end if (v instanceof CheckBox)

            Log.i("selectedSubjectArrayList", String
                    .valueOf(activity.arrayListSelectedSubject.size()));

        }// end onClick
    });// end setOnClickListener

    return convertView;
}
4

2 回答 2

2

你应该使用activity.this作为你的上下文,而不是getApplicationContext().

于 2015-01-30T14:11:16.403 回答
0

我也有这个问题。尝试使用 getView 函数的 ViewGroup 父级来获取正确的上下文。

LayoutInflater inflater = (LayoutInflater) parent.getContext()
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
于 2015-08-14T07:52:55.423 回答