主题不适用于listview中的复选框项

时间:2013-09-25 22:59:00

标签: android android-layout android-manifest android-theme android-checkbox

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

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

enter image description here

下面是我在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;
}

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

LayoutInflater inflater = (LayoutInflater) parent.getContext()
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);