Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在listview内单击的复选框上设置行背景_Android_Android Listview_Android Cursoradapter - Fatal编程技术网

Android 在listview内单击的复选框上设置行背景

Android 在listview内单击的复选框上设置行背景,android,android-listview,android-cursoradapter,Android,Android Listview,Android Cursoradapter,我有一个列表视图,每行有2个文本框和1个复选框。 我希望当用户选中该复选框时,可以将预定义的drawable设置为该行的背景 我曾尝试在我的cusotm光标适配器中的getView方法的Lisnner上执行此操作,但没有成功,请帮助 首先查找复选框id,然后 box.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(

我有一个列表视图,每行有2个文本框和1个复选框。 我希望当用户选中该复选框时,可以将预定义的drawable设置为该行的背景


我曾尝试在我的cusotm光标适配器中的getView方法的Lisnner上执行此操作,但没有成功,请帮助

首先查找复选框id,然后

 box.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {

            if (isChecked) {
                //set background when checked
            }else{
                //when unselect checkbox change background
            }


        }
    });

如果此代码有用,则给出+1或接受。

首先查找复选框id,然后

 box.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {

            if (isChecked) {
                //set background when checked
            }else{
                //when unselect checkbox change background
            }


        }
    });

如果此代码有用,则给出+1或接受。

列表适配器中使用此
getView
方法:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) mContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.list_item, null);
    CheckBox checkBox = (CheckBox) view.findViewById(R.id.check);
    checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            View row = (View) buttonView.getParent();
            if (isChecked) {
                row.setBackgroundResource(R.drawable.list_item_background_checked);
            } else {
                row.setBackgroundResource(android.R.color.transparent);
            }
        }
    });
    return view;
}

ListAdapter
中使用此
getView
方法:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) mContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.list_item, null);
    CheckBox checkBox = (CheckBox) view.findViewById(R.id.check);
    checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            View row = (View) buttonView.getParent();
            if (isChecked) {
                row.setBackgroundResource(R.drawable.list_item_background_checked);
            } else {
                row.setBackgroundResource(android.R.color.transparent);
            }
        }
    });
    return view;
}

现在,如果我不仅想在单击复选框时设置背景,而且还想设置已选中该复选框的所有行,我将如何做到这一点?这应该是隐式的。当以编程方式选中/取消选中复选框时,
onCheckedChangedListener
也会执行。请接受答案。现在,如果我不仅希望在单击复选框时设置背景,而且还希望设置已选中复选框的所有行,我将如何做到这一点?这应该是隐式的。当以编程方式选中/取消选中复选框时,
onCheckedChangedListener
也会执行。请接受答案。